<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://ss7api.null.ro/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://ss7api.null.ro/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Oana</id>
		<title>ss7api.null.ro - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://ss7api.null.ro/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Oana"/>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/Special:Contributions/Oana"/>
		<updated>2026-04-27T17:49:59Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.20.2</generator>

	<entry>
		<id>https://ss7api.null.ro/index.php/Cx/Dx</id>
		<title>Cx/Dx</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/Cx/Dx"/>
				<updated>2022-03-10T14:28:19Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: /* LocationInfo command */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
&lt;br /&gt;
This page shows as examples Diameter XMLs for the Cx/Dx interface&amp;lt;br&amp;gt;&lt;br /&gt;
Application id: 16777216&amp;lt;br&amp;gt;&lt;br /&gt;
Vendor id: 10415&lt;br /&gt;
&lt;br /&gt;
'''NOTES:''':&lt;br /&gt;
* The examples below are not consistent with CSCF/HSS functionality. Their parameters are present here to be seen.&lt;br /&gt;
* In the following examples a ''${str}'' means its value must be reflected from received message. E.g. ''${hhident}'' must be set from received message ''hhident'' parameter.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UserAuthorization Command ==&lt;br /&gt;
&lt;br /&gt;
=== Request ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;UserAuthorizationRequest appid=&amp;quot;16777216&amp;quot; code=&amp;quot;300&amp;quot; shortName=&amp;quot;UAR&amp;quot; flags=&amp;quot;request,proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost code=&amp;quot;293&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm code=&amp;quot;283&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VisitedNetworkIdentifier vendor=&amp;quot;10415&amp;quot; code=&amp;quot;600&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;UserAuthzType vendor=&amp;quot;10415&amp;quot; code=&amp;quot;623&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=register 1=unregister 2=register-and-caps&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/UserAuthzType&amp;gt;&lt;br /&gt;
  &amp;lt;UARFlags vendor=&amp;quot;10415&amp;quot; code=&amp;quot;637&amp;quot; format=&amp;quot;flags32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;0=emergency-register&amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
  &amp;lt;/UARFlags&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;UserAuthorizationRequest appid=&amp;quot;16777216&amp;quot; flags=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost&amp;gt;destination.ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm&amp;gt;ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;VisitedNetworkIdentifier vendor=&amp;quot;10415&amp;quot;&amp;gt;6578616d706c652e636f6d&amp;lt;/VisitedNetworkIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;UserAuthzType vendor=&amp;quot;10415&amp;quot;&amp;gt;register&amp;lt;/UserAuthzType&amp;gt;&lt;br /&gt;
  &amp;lt;UARFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;emergency-register&amp;lt;/UARFlags&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Answer ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;UserAuthorizationAnswer appid=&amp;quot;16777216&amp;quot; code=&amp;quot;300&amp;quot; shortName=&amp;quot;UAA&amp;quot; flags=&amp;quot;proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,need-result,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;ResultCode code=&amp;quot;268&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ExperimentalResult code=&amp;quot;297&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ExperimentalResultCode code=&amp;quot;298&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ServerCaps vendor=&amp;quot;10415&amp;quot; code=&amp;quot;603&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;MandatoryCaps vendor=&amp;quot;10415&amp;quot; code=&amp;quot;604&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;OptionalCaps vendor=&amp;quot;10415&amp;quot; code=&amp;quot;605&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ServerCaps&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;UserAuthorizationAnswer appid=&amp;quot;16777216&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_state}&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;ServerCaps vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;MandatoryCaps vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/MandatoryCaps&amp;gt;&lt;br /&gt;
    &amp;lt;OptionalCaps vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/OptionalCaps&amp;gt;&lt;br /&gt;
    &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;/ServerCaps&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ServerAssignment Command ==&lt;br /&gt;
&lt;br /&gt;
=== Request ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ServerAssignmentRequest appid=&amp;quot;16777216&amp;quot; code=&amp;quot;301&amp;quot; shortName=&amp;quot;SAR&amp;quot; flags=&amp;quot;request,proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost code=&amp;quot;293&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm code=&amp;quot;283&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;WildcardedPublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;634&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ServerAssignType vendor=&amp;quot;10415&amp;quot; code=&amp;quot;614&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=none 1=register 2=re-register 3=unregistered-user 4=timeout-unregister 5=unregistered 6=timeout-unregister-store-server 7=unregistered-store-server 8=admin-unregister 9=noauth 10=auth-timeout 11=unregister-too-much-data 12=aaa-user-data-request 13=pgw-update 14=restoration&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/ServerAssignType&amp;gt;&lt;br /&gt;
  &amp;lt;UserDataAlreadyAvailable vendor=&amp;quot;10415&amp;quot; code=&amp;quot;624&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=no 1=yes&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/UserDataAlreadyAvailable&amp;gt;&lt;br /&gt;
  &amp;lt;ScscfRestorationInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;639&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;RestorationInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;649&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Path vendor=&amp;quot;10415&amp;quot; code=&amp;quot;640&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;Contact vendor=&amp;quot;10415&amp;quot; code=&amp;quot;641&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;SubscriptionInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;642&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CallIdSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;643&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;FromSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;644&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;ToSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;645&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;RecordRoute vendor=&amp;quot;10415&amp;quot; code=&amp;quot;646&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Contact vendor=&amp;quot;10415&amp;quot; code=&amp;quot;641&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/SubscriptionInfo&amp;gt;&lt;br /&gt;
    &amp;lt;/RestorationInfo&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot; code=&amp;quot;608&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ScscfRestorationInfo&amp;gt;&lt;br /&gt;
  &amp;lt;MultipleReg vendor=&amp;quot;10415&amp;quot; code=&amp;quot;648&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=no 1=yes&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/MultipleReg&amp;gt;&lt;br /&gt;
  &amp;lt;SessionPriority vendor=&amp;quot;10415&amp;quot; code=&amp;quot;650&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/ServerAssignmentRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;ServerAssignmentRequest appid=&amp;quot;16777216&amp;quot; flags=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost&amp;gt;destination.ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm&amp;gt;ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;WildcardedPublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/WildcardedPublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;ServerAssignType vendor=&amp;quot;10415&amp;quot;&amp;gt;register&amp;lt;/ServerAssignType&amp;gt;&lt;br /&gt;
  &amp;lt;UserDataAlreadyAvailable vendor=&amp;quot;10415&amp;quot;&amp;gt;true&amp;lt;/UserDataAlreadyAvailable&amp;gt;&lt;br /&gt;
  &amp;lt;ScscfRestorationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
    &amp;lt;RestorationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Path vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Path&amp;gt;&lt;br /&gt;
      &amp;lt;Contact vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Contact&amp;gt;&lt;br /&gt;
      &amp;lt;SubscriptionInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CallIdSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/CallIdSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;FromSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/FromSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;ToSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/ToSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;RecordRoute vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/RecordRoute&amp;gt;&lt;br /&gt;
        &amp;lt;Contact vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Contact&amp;gt;&lt;br /&gt;
      &amp;lt;/SubscriptionInfo&amp;gt;&lt;br /&gt;
    &amp;lt;/RestorationInfo&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/SipAuthScheme&amp;gt;&lt;br /&gt;
  &amp;lt;/ScscfRestorationInfo&amp;gt;&lt;br /&gt;
  &amp;lt;MultipleReg vendor=&amp;quot;10415&amp;quot;&amp;gt;false&amp;lt;/MultipleReg&amp;gt;&lt;br /&gt;
  &amp;lt;SessionPriority vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SessionPriority&amp;gt;&lt;br /&gt;
 &amp;lt;/ServerAssignmentRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Answer ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ServerAssignmentAnswer appid=&amp;quot;16777216&amp;quot; code=&amp;quot;301&amp;quot; shortName=&amp;quot;SAA&amp;quot; flags=&amp;quot;proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,need-result,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;ResultCode code=&amp;quot;268&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ExperimentalResult code=&amp;quot;297&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ExperimentalResultCode code=&amp;quot;298&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;UserData vendor=&amp;quot;10415&amp;quot; code=&amp;quot;606&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ChargingInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;618&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryEventChargingFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;619&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryEventChargingFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;620&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;621&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;622&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ChargingInfo&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedIdentities vendor=&amp;quot;10415&amp;quot; code=&amp;quot;632&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;LooseRoute vendor=&amp;quot;10415&amp;quot; code=&amp;quot;638&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=no 1=yes&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/LooseRoute&amp;gt;&lt;br /&gt;
  &amp;lt;ScscfRestorationInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;639&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;RestorationInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;649&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Path vendor=&amp;quot;10415&amp;quot; code=&amp;quot;640&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;Contact vendor=&amp;quot;10415&amp;quot; code=&amp;quot;641&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;SubscriptionInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;642&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CallIdSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;643&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;FromSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;644&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;ToSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;645&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;RecordRoute vendor=&amp;quot;10415&amp;quot; code=&amp;quot;646&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Contact vendor=&amp;quot;10415&amp;quot; code=&amp;quot;641&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/SubscriptionInfo&amp;gt;&lt;br /&gt;
    &amp;lt;/RestorationInfo&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot; code=&amp;quot;608&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ScscfRestorationInfo&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedRegisteredIdentities vendor=&amp;quot;10415&amp;quot; code=&amp;quot;647&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedRegisteredIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;WildcardedPublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;634&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;PriviledgedSender vendor=&amp;quot;10415&amp;quot; code=&amp;quot;652&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=no 1=yes&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/PriviledgedSender&amp;gt;&lt;br /&gt;
 &amp;lt;/ServerAssignmentAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;ServerAssignmentAnswer appid=&amp;quot;16777216&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_state}&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;UserData vendor=&amp;quot;10415&amp;quot;&amp;gt;&amp;lt;IMSSubscription/&amp;gt;&amp;lt;/UserData&amp;gt;&lt;br /&gt;
  &amp;lt;ChargingInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryEventChargingFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/PrimaryEventChargingFN&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryEventChargingFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/SecondaryEventChargingFN&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/PrimaryChargingCollectionFN&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/SecondaryChargingCollectionFN&amp;gt;&lt;br /&gt;
  &amp;lt;/ChargingInfo&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedIdentities vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;LooseRoute vendor=&amp;quot;10415&amp;quot;&amp;gt;true&amp;lt;/LooseRoute&amp;gt;&lt;br /&gt;
  &amp;lt;ScscfRestorationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
    &amp;lt;RestorationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Path vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Path&amp;gt;&lt;br /&gt;
      &amp;lt;Contact vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Contact&amp;gt;&lt;br /&gt;
      &amp;lt;SubscriptionInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CallIdSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/CallIdSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;FromSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/FromSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;ToSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/ToSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;RecordRoute vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/RecordRoute&amp;gt;&lt;br /&gt;
        &amp;lt;Contact vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Contact&amp;gt;&lt;br /&gt;
      &amp;lt;/SubscriptionInfo&amp;gt;&lt;br /&gt;
    &amp;lt;/RestorationInfo&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/SipAuthScheme&amp;gt;&lt;br /&gt;
  &amp;lt;/ScscfRestorationInfo&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedRegisteredIdentities vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedRegisteredIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;WildcardedPublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/WildcardedPublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;PriviledgedSender vendor=&amp;quot;10415&amp;quot;&amp;gt;true&amp;lt;/PriviledgedSender&amp;gt;&lt;br /&gt;
 &amp;lt;/ServerAssignmentAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LocationInfo Command ==&lt;br /&gt;
&lt;br /&gt;
=== Request ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;LocationInfoRequest appid=&amp;quot;16777216&amp;quot; code=&amp;quot;302&amp;quot; shortName=&amp;quot;LIR&amp;quot; flags=&amp;quot;request,proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost code=&amp;quot;293&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm code=&amp;quot;283&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginatingRequest vendor=&amp;quot;10415&amp;quot; code=&amp;quot;633&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;UserAuthzType vendor=&amp;quot;10415&amp;quot; code=&amp;quot;623&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=register 1=unregister 2=register-and-caps&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/UserAuthzType&amp;gt;&lt;br /&gt;
  &amp;lt;SessionPriority vendor=&amp;quot;10415&amp;quot; code=&amp;quot;650&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/LocationInfoRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;LocationInfoRequest appid=&amp;quot;16777216&amp;quot; flags=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost&amp;gt;destination.ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm&amp;gt;ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
  &amp;lt;OriginatingRequest vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/OriginatingRequest&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;UserAuthzType vendor=&amp;quot;10415&amp;quot;&amp;gt;unregister&amp;lt;/UserAuthzType&amp;gt;&lt;br /&gt;
  &amp;lt;SessionPriority vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SessionPriority&amp;gt;&lt;br /&gt;
 &amp;lt;/LocationInfoRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Answer ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;LocationInfoAnswer appid=&amp;quot;16777216&amp;quot; code=&amp;quot;302&amp;quot; shortName=&amp;quot;LIA&amp;quot; flags=&amp;quot;proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,need-result,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;ResultCode code=&amp;quot;268&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ExperimentalResult code=&amp;quot;297&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ExperimentalResultCode code=&amp;quot;298&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ServerCaps vendor=&amp;quot;10415&amp;quot; code=&amp;quot;603&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;MandatoryCaps vendor=&amp;quot;10415&amp;quot; code=&amp;quot;604&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;OptionalCaps vendor=&amp;quot;10415&amp;quot; code=&amp;quot;605&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ServerCaps&amp;gt;&lt;br /&gt;
  &amp;lt;WildcardedPublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;634&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;LIAFlags vendor=&amp;quot;10415&amp;quot; code=&amp;quot;653&amp;quot; format=&amp;quot;flags32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;0=psi-direct-routing&amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
  &amp;lt;/LIAFlags&amp;gt;&lt;br /&gt;
 &amp;lt;/LocationInfoAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;LocationInfoAnswer appid=&amp;quot;16777216&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_state}&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;ServerCaps vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;MandatoryCaps vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/MandatoryCaps&amp;gt;&lt;br /&gt;
    &amp;lt;OptionalCaps vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/OptionalCaps&amp;gt;&lt;br /&gt;
    &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;/ServerCaps&amp;gt;&lt;br /&gt;
  &amp;lt;WildcardedPublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/WildcardedPublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;LIAFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;psi-direct-routing&amp;lt;/LIAFlags&amp;gt;&lt;br /&gt;
 &amp;lt;/LocationInfoAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== MultimediaAuth Command ==&lt;br /&gt;
&lt;br /&gt;
=== Request ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;MultimediaAuthRequest appid=&amp;quot;16777216&amp;quot; code=&amp;quot;303&amp;quot; shortName=&amp;quot;MAR&amp;quot; flags=&amp;quot;request,proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost code=&amp;quot;293&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm code=&amp;quot;283&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SipAuthDataItem vendor=&amp;quot;10415&amp;quot; code=&amp;quot;612&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;SipItemNumber vendor=&amp;quot;10415&amp;quot; code=&amp;quot;613&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot; code=&amp;quot;608&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthenticate vendor=&amp;quot;10415&amp;quot; code=&amp;quot;609&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthorization vendor=&amp;quot;10415&amp;quot; code=&amp;quot;610&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthContext vendor=&amp;quot;10415&amp;quot; code=&amp;quot;611&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot; code=&amp;quot;625&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot; code=&amp;quot;626&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipDigestAuthenticate vendor=&amp;quot;10415&amp;quot; code=&amp;quot;635&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;DigestRealm code=&amp;quot;104&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestAlgorithm code=&amp;quot;111&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestQop code=&amp;quot;110&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestHA1 code=&amp;quot;121&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/SipDigestAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIpAddr code=&amp;quot;8&amp;quot; format=&amp;quot;ipv4&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIPv6Prefix code=&amp;quot;97&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIfaceId code=&amp;quot;96&amp;quot; format=&amp;quot;uint64&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;LineIdentifier vendor=&amp;quot;13019&amp;quot; code=&amp;quot;500&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SipAuthDataItem&amp;gt;&lt;br /&gt;
  &amp;lt;SipNumberAuthItems vendor=&amp;quot;10415&amp;quot; code=&amp;quot;607&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/MultimediaAuthRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;MultimediaAuthRequest appid=&amp;quot;16777216&amp;quot; flags=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost&amp;gt;destination.ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm&amp;gt;ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;SipAuthDataItem vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;SipItemNumber vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SipItemNumber&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/SipAuthScheme&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthenticate vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthorization vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthorization&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthContext vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthContext&amp;gt;&lt;br /&gt;
    &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/ConfidentialityKey&amp;gt;&lt;br /&gt;
    &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/IntegrityKey&amp;gt;&lt;br /&gt;
    &amp;lt;SipDigestAuthenticate vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;DigestRealm&amp;gt;utf-8.string&amp;lt;/DigestRealm&amp;gt;&lt;br /&gt;
      &amp;lt;DigestAlgorithm&amp;gt;utf-8.string&amp;lt;/DigestAlgorithm&amp;gt;&lt;br /&gt;
      &amp;lt;DigestQop&amp;gt;utf-8.string&amp;lt;/DigestQop&amp;gt;&lt;br /&gt;
      &amp;lt;DigestHA1&amp;gt;utf-8.string&amp;lt;/DigestHA1&amp;gt;&lt;br /&gt;
    &amp;lt;/SipDigestAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIpAddr&amp;gt;1.2.3.4&amp;lt;/FramedIpAddr&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIPv6Prefix&amp;gt;1122554433aa22&amp;lt;/FramedIPv6Prefix&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIfaceId&amp;gt;0&amp;lt;/FramedIfaceId&amp;gt;&lt;br /&gt;
    &amp;lt;LineIdentifier vendor=&amp;quot;13019&amp;quot;&amp;gt;00554433aa&amp;lt;/LineIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;/SipAuthDataItem&amp;gt;&lt;br /&gt;
  &amp;lt;SipNumberAuthItems vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SipNumberAuthItems&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
 &amp;lt;/MultimediaAuthRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Answer ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;MultimediaAuthAnswer appid=&amp;quot;16777216&amp;quot; code=&amp;quot;303&amp;quot; shortName=&amp;quot;MAA&amp;quot; flags=&amp;quot;proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,need-result,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;ResultCode code=&amp;quot;268&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ExperimentalResult code=&amp;quot;297&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ExperimentalResultCode code=&amp;quot;298&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SipNumberAuthItems vendor=&amp;quot;10415&amp;quot; code=&amp;quot;607&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SipAuthDataItem vendor=&amp;quot;10415&amp;quot; code=&amp;quot;612&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;SipItemNumber vendor=&amp;quot;10415&amp;quot; code=&amp;quot;613&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot; code=&amp;quot;608&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthenticate vendor=&amp;quot;10415&amp;quot; code=&amp;quot;609&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthorization vendor=&amp;quot;10415&amp;quot; code=&amp;quot;610&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthContext vendor=&amp;quot;10415&amp;quot; code=&amp;quot;611&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot; code=&amp;quot;625&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot; code=&amp;quot;626&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipDigestAuthenticate vendor=&amp;quot;10415&amp;quot; code=&amp;quot;635&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;DigestRealm code=&amp;quot;104&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestAlgorithm code=&amp;quot;111&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestQop code=&amp;quot;110&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestHA1 code=&amp;quot;121&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/SipDigestAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIpAddr code=&amp;quot;8&amp;quot; format=&amp;quot;ipv4&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIPv6Prefix code=&amp;quot;97&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIfaceId code=&amp;quot;96&amp;quot; format=&amp;quot;uint64&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;LineIdentifier vendor=&amp;quot;13019&amp;quot; code=&amp;quot;500&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SipAuthDataItem&amp;gt;&lt;br /&gt;
 &amp;lt;/MultimediaAuthAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;MultimediaAuthAnswer appid=&amp;quot;16777216&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_state}&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;SipNumberAuthItems vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SipNumberAuthItems&amp;gt;&lt;br /&gt;
  &amp;lt;SipAuthDataItem vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;SipItemNumber vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SipItemNumber&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/SipAuthScheme&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthenticate vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthorization vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthorization&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthContext vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthContext&amp;gt;&lt;br /&gt;
    &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/ConfidentialityKey&amp;gt;&lt;br /&gt;
    &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/IntegrityKey&amp;gt;&lt;br /&gt;
    &amp;lt;SipDigestAuthenticate vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;DigestRealm&amp;gt;utf-8.string&amp;lt;/DigestRealm&amp;gt;&lt;br /&gt;
      &amp;lt;DigestAlgorithm&amp;gt;utf-8.string&amp;lt;/DigestAlgorithm&amp;gt;&lt;br /&gt;
      &amp;lt;DigestQop&amp;gt;utf-8.string&amp;lt;/DigestQop&amp;gt;&lt;br /&gt;
      &amp;lt;DigestHA1&amp;gt;utf-8.string&amp;lt;/DigestHA1&amp;gt;&lt;br /&gt;
    &amp;lt;/SipDigestAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIpAddr&amp;gt;1.2.3.4&amp;lt;/FramedIpAddr&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIPv6Prefix&amp;gt;1122554433aa22&amp;lt;/FramedIPv6Prefix&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIfaceId&amp;gt;0&amp;lt;/FramedIfaceId&amp;gt;&lt;br /&gt;
    &amp;lt;LineIdentifier vendor=&amp;quot;13019&amp;quot;&amp;gt;00554433aa&amp;lt;/LineIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;/SipAuthDataItem&amp;gt;&lt;br /&gt;
 &amp;lt;/MultimediaAuthAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== RegistrationTermination Command ==&lt;br /&gt;
&lt;br /&gt;
=== Request ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
 &amp;lt;RegistrationTerminationRequest appid=&amp;quot;16777216&amp;quot; code=&amp;quot;304&amp;quot; shortName=&amp;quot;RTR&amp;quot; flags=&amp;quot;request,proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost code=&amp;quot;293&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm code=&amp;quot;283&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedIdentities vendor=&amp;quot;10415&amp;quot; code=&amp;quot;632&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DeregistrationReason vendor=&amp;quot;10415&amp;quot; code=&amp;quot;615&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ReasonCode vendor=&amp;quot;10415&amp;quot; code=&amp;quot;616&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;dictionary&amp;gt;0=permanent 1=new-server-assigned 2=server-change 3=remove-s-cscf&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
    &amp;lt;/ReasonCode&amp;gt;&lt;br /&gt;
    &amp;lt;ReasonInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;617&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/DeregistrationReason&amp;gt;&lt;br /&gt;
 &amp;lt;/RegistrationTerminationRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;RegistrationTerminationRequest appid=&amp;quot;16777216&amp;quot; flags=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost&amp;gt;destination.ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm&amp;gt;ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedIdentities vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;DeregistrationReason vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ReasonCode vendor=&amp;quot;10415&amp;quot;&amp;gt;server-change&amp;lt;/ReasonCode&amp;gt;&lt;br /&gt;
    &amp;lt;ReasonInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ReasonInfo&amp;gt;&lt;br /&gt;
  &amp;lt;/DeregistrationReason&amp;gt;&lt;br /&gt;
 &amp;lt;/RegistrationTerminationRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Answer ===&lt;br /&gt;
&lt;br /&gt;
General schema: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;RegistrationTerminationAnswer appid=&amp;quot;16777216&amp;quot; code=&amp;quot;304&amp;quot; shortName=&amp;quot;RTA&amp;quot; flags=&amp;quot;proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,need-result,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;ResultCode code=&amp;quot;268&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ExperimentalResult code=&amp;quot;297&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ExperimentalResultCode code=&amp;quot;298&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedIdentities vendor=&amp;quot;10415&amp;quot; code=&amp;quot;632&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;IdentityWithEmergencyReg vendor=&amp;quot;10415&amp;quot; code=&amp;quot;651&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/IdentityWithEmergencyReg&amp;gt;&lt;br /&gt;
 &amp;lt;/RegistrationTerminationAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;RegistrationTerminationAnswer appid=&amp;quot;16777216&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_state}&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedIdentities vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;IdentityWithEmergencyReg vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
    &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;/IdentityWithEmergencyReg&amp;gt;&lt;br /&gt;
 &amp;lt;/RegistrationTerminationAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PushProfile Command ==&lt;br /&gt;
&lt;br /&gt;
=== Request ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;PushProfileRequest appid=&amp;quot;16777216&amp;quot; code=&amp;quot;305&amp;quot; shortName=&amp;quot;PPR&amp;quot; flags=&amp;quot;request,proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost code=&amp;quot;293&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm code=&amp;quot;283&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;UserData vendor=&amp;quot;10415&amp;quot; code=&amp;quot;606&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ChargingInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;618&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryEventChargingFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;619&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryEventChargingFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;620&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;621&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;622&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ChargingInfo&amp;gt;&lt;br /&gt;
  &amp;lt;SipAuthDataItem vendor=&amp;quot;10415&amp;quot; code=&amp;quot;612&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;SipItemNumber vendor=&amp;quot;10415&amp;quot; code=&amp;quot;613&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot; code=&amp;quot;608&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthenticate vendor=&amp;quot;10415&amp;quot; code=&amp;quot;609&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthorization vendor=&amp;quot;10415&amp;quot; code=&amp;quot;610&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthContext vendor=&amp;quot;10415&amp;quot; code=&amp;quot;611&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot; code=&amp;quot;625&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot; code=&amp;quot;626&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipDigestAuthenticate vendor=&amp;quot;10415&amp;quot; code=&amp;quot;635&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;DigestRealm code=&amp;quot;104&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestAlgorithm code=&amp;quot;111&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestQop code=&amp;quot;110&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestHA1 code=&amp;quot;121&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/SipDigestAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIpAddr code=&amp;quot;8&amp;quot; format=&amp;quot;ipv4&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIPv6Prefix code=&amp;quot;97&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIfaceId code=&amp;quot;96&amp;quot; format=&amp;quot;uint64&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;LineIdentifier vendor=&amp;quot;13019&amp;quot; code=&amp;quot;500&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SipAuthDataItem&amp;gt;&lt;br /&gt;
 &amp;lt;/PushProfileRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;PushProfileRequest appid=&amp;quot;16777216&amp;quot; flags=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost&amp;gt;destination.ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm&amp;gt;ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;UserData vendor=&amp;quot;10415&amp;quot;&amp;gt;&amp;lt;IMSSubscription/&amp;gt;&amp;lt;/UserData&amp;gt;&lt;br /&gt;
  &amp;lt;ChargingInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryEventChargingFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/PrimaryEventChargingFN&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryEventChargingFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/SecondaryEventChargingFN&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/PrimaryChargingCollectionFN&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/SecondaryChargingCollectionFN&amp;gt;&lt;br /&gt;
  &amp;lt;/ChargingInfo&amp;gt;&lt;br /&gt;
  &amp;lt;SipAuthDataItem vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;SipItemNumber vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SipItemNumber&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/SipAuthScheme&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthenticate vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthorization vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthorization&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthContext vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthContext&amp;gt;&lt;br /&gt;
    &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/ConfidentialityKey&amp;gt;&lt;br /&gt;
    &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/IntegrityKey&amp;gt;&lt;br /&gt;
    &amp;lt;SipDigestAuthenticate vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;DigestRealm&amp;gt;utf-8.string&amp;lt;/DigestRealm&amp;gt;&lt;br /&gt;
      &amp;lt;DigestAlgorithm&amp;gt;utf-8.string&amp;lt;/DigestAlgorithm&amp;gt;&lt;br /&gt;
      &amp;lt;DigestQop&amp;gt;utf-8.string&amp;lt;/DigestQop&amp;gt;&lt;br /&gt;
      &amp;lt;DigestHA1&amp;gt;utf-8.string&amp;lt;/DigestHA1&amp;gt;&lt;br /&gt;
    &amp;lt;/SipDigestAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIpAddr&amp;gt;1.2.3.4&amp;lt;/FramedIpAddr&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIPv6Prefix&amp;gt;1122554433aa22&amp;lt;/FramedIPv6Prefix&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIfaceId&amp;gt;0&amp;lt;/FramedIfaceId&amp;gt;&lt;br /&gt;
    &amp;lt;LineIdentifier vendor=&amp;quot;13019&amp;quot;&amp;gt;00554433aa&amp;lt;/LineIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;/SipAuthDataItem&amp;gt;&lt;br /&gt;
 &amp;lt;/PushProfileRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Answer ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;PushProfileAnswer appid=&amp;quot;16777216&amp;quot; code=&amp;quot;305&amp;quot; shortName=&amp;quot;PPA&amp;quot; flags=&amp;quot;proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,need-result,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;ResultCode code=&amp;quot;268&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ExperimentalResult code=&amp;quot;297&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ExperimentalResultCode code=&amp;quot;298&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
 &amp;lt;/PushProfileAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;PushProfileAnswer appid=&amp;quot;16777216&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_state}&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
 &amp;lt;/PushProfileAnswer&amp;gt;&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/Cx/Dx</id>
		<title>Cx/Dx</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/Cx/Dx"/>
				<updated>2022-03-10T14:28:04Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: /* Answer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
&lt;br /&gt;
This page shows as examples Diameter XMLs for the Cx/Dx interface&amp;lt;br&amp;gt;&lt;br /&gt;
Application id: 16777216&amp;lt;br&amp;gt;&lt;br /&gt;
Vendor id: 10415&lt;br /&gt;
&lt;br /&gt;
'''NOTES:''':&lt;br /&gt;
* The examples below are not consistent with CSCF/HSS functionality. Their parameters are present here to be seen.&lt;br /&gt;
* In the following examples a ''${str}'' means its value must be reflected from received message. E.g. ''${hhident}'' must be set from received message ''hhident'' parameter.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UserAuthorization Command ==&lt;br /&gt;
&lt;br /&gt;
=== Request ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;UserAuthorizationRequest appid=&amp;quot;16777216&amp;quot; code=&amp;quot;300&amp;quot; shortName=&amp;quot;UAR&amp;quot; flags=&amp;quot;request,proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost code=&amp;quot;293&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm code=&amp;quot;283&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VisitedNetworkIdentifier vendor=&amp;quot;10415&amp;quot; code=&amp;quot;600&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;UserAuthzType vendor=&amp;quot;10415&amp;quot; code=&amp;quot;623&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=register 1=unregister 2=register-and-caps&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/UserAuthzType&amp;gt;&lt;br /&gt;
  &amp;lt;UARFlags vendor=&amp;quot;10415&amp;quot; code=&amp;quot;637&amp;quot; format=&amp;quot;flags32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;0=emergency-register&amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
  &amp;lt;/UARFlags&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;UserAuthorizationRequest appid=&amp;quot;16777216&amp;quot; flags=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost&amp;gt;destination.ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm&amp;gt;ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;VisitedNetworkIdentifier vendor=&amp;quot;10415&amp;quot;&amp;gt;6578616d706c652e636f6d&amp;lt;/VisitedNetworkIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;UserAuthzType vendor=&amp;quot;10415&amp;quot;&amp;gt;register&amp;lt;/UserAuthzType&amp;gt;&lt;br /&gt;
  &amp;lt;UARFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;emergency-register&amp;lt;/UARFlags&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Answer ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;UserAuthorizationAnswer appid=&amp;quot;16777216&amp;quot; code=&amp;quot;300&amp;quot; shortName=&amp;quot;UAA&amp;quot; flags=&amp;quot;proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,need-result,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;ResultCode code=&amp;quot;268&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ExperimentalResult code=&amp;quot;297&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ExperimentalResultCode code=&amp;quot;298&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ServerCaps vendor=&amp;quot;10415&amp;quot; code=&amp;quot;603&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;MandatoryCaps vendor=&amp;quot;10415&amp;quot; code=&amp;quot;604&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;OptionalCaps vendor=&amp;quot;10415&amp;quot; code=&amp;quot;605&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ServerCaps&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;UserAuthorizationAnswer appid=&amp;quot;16777216&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_state}&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;ServerCaps vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;MandatoryCaps vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/MandatoryCaps&amp;gt;&lt;br /&gt;
    &amp;lt;OptionalCaps vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/OptionalCaps&amp;gt;&lt;br /&gt;
    &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;/ServerCaps&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ServerAssignment Command ==&lt;br /&gt;
&lt;br /&gt;
=== Request ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ServerAssignmentRequest appid=&amp;quot;16777216&amp;quot; code=&amp;quot;301&amp;quot; shortName=&amp;quot;SAR&amp;quot; flags=&amp;quot;request,proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost code=&amp;quot;293&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm code=&amp;quot;283&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;WildcardedPublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;634&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ServerAssignType vendor=&amp;quot;10415&amp;quot; code=&amp;quot;614&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=none 1=register 2=re-register 3=unregistered-user 4=timeout-unregister 5=unregistered 6=timeout-unregister-store-server 7=unregistered-store-server 8=admin-unregister 9=noauth 10=auth-timeout 11=unregister-too-much-data 12=aaa-user-data-request 13=pgw-update 14=restoration&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/ServerAssignType&amp;gt;&lt;br /&gt;
  &amp;lt;UserDataAlreadyAvailable vendor=&amp;quot;10415&amp;quot; code=&amp;quot;624&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=no 1=yes&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/UserDataAlreadyAvailable&amp;gt;&lt;br /&gt;
  &amp;lt;ScscfRestorationInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;639&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;RestorationInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;649&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Path vendor=&amp;quot;10415&amp;quot; code=&amp;quot;640&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;Contact vendor=&amp;quot;10415&amp;quot; code=&amp;quot;641&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;SubscriptionInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;642&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CallIdSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;643&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;FromSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;644&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;ToSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;645&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;RecordRoute vendor=&amp;quot;10415&amp;quot; code=&amp;quot;646&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Contact vendor=&amp;quot;10415&amp;quot; code=&amp;quot;641&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/SubscriptionInfo&amp;gt;&lt;br /&gt;
    &amp;lt;/RestorationInfo&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot; code=&amp;quot;608&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ScscfRestorationInfo&amp;gt;&lt;br /&gt;
  &amp;lt;MultipleReg vendor=&amp;quot;10415&amp;quot; code=&amp;quot;648&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=no 1=yes&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/MultipleReg&amp;gt;&lt;br /&gt;
  &amp;lt;SessionPriority vendor=&amp;quot;10415&amp;quot; code=&amp;quot;650&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/ServerAssignmentRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;ServerAssignmentRequest appid=&amp;quot;16777216&amp;quot; flags=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost&amp;gt;destination.ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm&amp;gt;ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;WildcardedPublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/WildcardedPublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;ServerAssignType vendor=&amp;quot;10415&amp;quot;&amp;gt;register&amp;lt;/ServerAssignType&amp;gt;&lt;br /&gt;
  &amp;lt;UserDataAlreadyAvailable vendor=&amp;quot;10415&amp;quot;&amp;gt;true&amp;lt;/UserDataAlreadyAvailable&amp;gt;&lt;br /&gt;
  &amp;lt;ScscfRestorationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
    &amp;lt;RestorationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Path vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Path&amp;gt;&lt;br /&gt;
      &amp;lt;Contact vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Contact&amp;gt;&lt;br /&gt;
      &amp;lt;SubscriptionInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CallIdSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/CallIdSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;FromSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/FromSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;ToSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/ToSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;RecordRoute vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/RecordRoute&amp;gt;&lt;br /&gt;
        &amp;lt;Contact vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Contact&amp;gt;&lt;br /&gt;
      &amp;lt;/SubscriptionInfo&amp;gt;&lt;br /&gt;
    &amp;lt;/RestorationInfo&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/SipAuthScheme&amp;gt;&lt;br /&gt;
  &amp;lt;/ScscfRestorationInfo&amp;gt;&lt;br /&gt;
  &amp;lt;MultipleReg vendor=&amp;quot;10415&amp;quot;&amp;gt;false&amp;lt;/MultipleReg&amp;gt;&lt;br /&gt;
  &amp;lt;SessionPriority vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SessionPriority&amp;gt;&lt;br /&gt;
 &amp;lt;/ServerAssignmentRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Answer ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ServerAssignmentAnswer appid=&amp;quot;16777216&amp;quot; code=&amp;quot;301&amp;quot; shortName=&amp;quot;SAA&amp;quot; flags=&amp;quot;proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,need-result,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;ResultCode code=&amp;quot;268&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ExperimentalResult code=&amp;quot;297&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ExperimentalResultCode code=&amp;quot;298&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;UserData vendor=&amp;quot;10415&amp;quot; code=&amp;quot;606&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ChargingInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;618&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryEventChargingFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;619&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryEventChargingFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;620&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;621&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;622&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ChargingInfo&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedIdentities vendor=&amp;quot;10415&amp;quot; code=&amp;quot;632&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;LooseRoute vendor=&amp;quot;10415&amp;quot; code=&amp;quot;638&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=no 1=yes&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/LooseRoute&amp;gt;&lt;br /&gt;
  &amp;lt;ScscfRestorationInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;639&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;RestorationInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;649&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Path vendor=&amp;quot;10415&amp;quot; code=&amp;quot;640&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;Contact vendor=&amp;quot;10415&amp;quot; code=&amp;quot;641&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;SubscriptionInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;642&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CallIdSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;643&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;FromSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;644&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;ToSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;645&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;RecordRoute vendor=&amp;quot;10415&amp;quot; code=&amp;quot;646&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Contact vendor=&amp;quot;10415&amp;quot; code=&amp;quot;641&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/SubscriptionInfo&amp;gt;&lt;br /&gt;
    &amp;lt;/RestorationInfo&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot; code=&amp;quot;608&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ScscfRestorationInfo&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedRegisteredIdentities vendor=&amp;quot;10415&amp;quot; code=&amp;quot;647&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedRegisteredIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;WildcardedPublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;634&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;PriviledgedSender vendor=&amp;quot;10415&amp;quot; code=&amp;quot;652&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=no 1=yes&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/PriviledgedSender&amp;gt;&lt;br /&gt;
 &amp;lt;/ServerAssignmentAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;ServerAssignmentAnswer appid=&amp;quot;16777216&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_state}&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;UserData vendor=&amp;quot;10415&amp;quot;&amp;gt;&amp;lt;IMSSubscription/&amp;gt;&amp;lt;/UserData&amp;gt;&lt;br /&gt;
  &amp;lt;ChargingInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryEventChargingFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/PrimaryEventChargingFN&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryEventChargingFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/SecondaryEventChargingFN&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/PrimaryChargingCollectionFN&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/SecondaryChargingCollectionFN&amp;gt;&lt;br /&gt;
  &amp;lt;/ChargingInfo&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedIdentities vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;LooseRoute vendor=&amp;quot;10415&amp;quot;&amp;gt;true&amp;lt;/LooseRoute&amp;gt;&lt;br /&gt;
  &amp;lt;ScscfRestorationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
    &amp;lt;RestorationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Path vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Path&amp;gt;&lt;br /&gt;
      &amp;lt;Contact vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Contact&amp;gt;&lt;br /&gt;
      &amp;lt;SubscriptionInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CallIdSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/CallIdSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;FromSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/FromSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;ToSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/ToSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;RecordRoute vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/RecordRoute&amp;gt;&lt;br /&gt;
        &amp;lt;Contact vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Contact&amp;gt;&lt;br /&gt;
      &amp;lt;/SubscriptionInfo&amp;gt;&lt;br /&gt;
    &amp;lt;/RestorationInfo&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/SipAuthScheme&amp;gt;&lt;br /&gt;
  &amp;lt;/ScscfRestorationInfo&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedRegisteredIdentities vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedRegisteredIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;WildcardedPublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/WildcardedPublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;PriviledgedSender vendor=&amp;quot;10415&amp;quot;&amp;gt;true&amp;lt;/PriviledgedSender&amp;gt;&lt;br /&gt;
 &amp;lt;/ServerAssignmentAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== LocationInfo command ==&lt;br /&gt;
&lt;br /&gt;
=== Request ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;LocationInfoRequest appid=&amp;quot;16777216&amp;quot; code=&amp;quot;302&amp;quot; shortName=&amp;quot;LIR&amp;quot; flags=&amp;quot;request,proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost code=&amp;quot;293&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm code=&amp;quot;283&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginatingRequest vendor=&amp;quot;10415&amp;quot; code=&amp;quot;633&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;UserAuthzType vendor=&amp;quot;10415&amp;quot; code=&amp;quot;623&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=register 1=unregister 2=register-and-caps&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/UserAuthzType&amp;gt;&lt;br /&gt;
  &amp;lt;SessionPriority vendor=&amp;quot;10415&amp;quot; code=&amp;quot;650&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/LocationInfoRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;LocationInfoRequest appid=&amp;quot;16777216&amp;quot; flags=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost&amp;gt;destination.ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm&amp;gt;ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
  &amp;lt;OriginatingRequest vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/OriginatingRequest&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;UserAuthzType vendor=&amp;quot;10415&amp;quot;&amp;gt;unregister&amp;lt;/UserAuthzType&amp;gt;&lt;br /&gt;
  &amp;lt;SessionPriority vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SessionPriority&amp;gt;&lt;br /&gt;
 &amp;lt;/LocationInfoRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Answer ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;LocationInfoAnswer appid=&amp;quot;16777216&amp;quot; code=&amp;quot;302&amp;quot; shortName=&amp;quot;LIA&amp;quot; flags=&amp;quot;proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,need-result,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;ResultCode code=&amp;quot;268&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ExperimentalResult code=&amp;quot;297&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ExperimentalResultCode code=&amp;quot;298&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ServerCaps vendor=&amp;quot;10415&amp;quot; code=&amp;quot;603&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;MandatoryCaps vendor=&amp;quot;10415&amp;quot; code=&amp;quot;604&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;OptionalCaps vendor=&amp;quot;10415&amp;quot; code=&amp;quot;605&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ServerCaps&amp;gt;&lt;br /&gt;
  &amp;lt;WildcardedPublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;634&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;LIAFlags vendor=&amp;quot;10415&amp;quot; code=&amp;quot;653&amp;quot; format=&amp;quot;flags32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;0=psi-direct-routing&amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
  &amp;lt;/LIAFlags&amp;gt;&lt;br /&gt;
 &amp;lt;/LocationInfoAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;LocationInfoAnswer appid=&amp;quot;16777216&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_state}&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;ServerCaps vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;MandatoryCaps vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/MandatoryCaps&amp;gt;&lt;br /&gt;
    &amp;lt;OptionalCaps vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/OptionalCaps&amp;gt;&lt;br /&gt;
    &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;/ServerCaps&amp;gt;&lt;br /&gt;
  &amp;lt;WildcardedPublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/WildcardedPublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;LIAFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;psi-direct-routing&amp;lt;/LIAFlags&amp;gt;&lt;br /&gt;
 &amp;lt;/LocationInfoAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== MultimediaAuth Command ==&lt;br /&gt;
&lt;br /&gt;
=== Request ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;MultimediaAuthRequest appid=&amp;quot;16777216&amp;quot; code=&amp;quot;303&amp;quot; shortName=&amp;quot;MAR&amp;quot; flags=&amp;quot;request,proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost code=&amp;quot;293&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm code=&amp;quot;283&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SipAuthDataItem vendor=&amp;quot;10415&amp;quot; code=&amp;quot;612&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;SipItemNumber vendor=&amp;quot;10415&amp;quot; code=&amp;quot;613&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot; code=&amp;quot;608&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthenticate vendor=&amp;quot;10415&amp;quot; code=&amp;quot;609&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthorization vendor=&amp;quot;10415&amp;quot; code=&amp;quot;610&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthContext vendor=&amp;quot;10415&amp;quot; code=&amp;quot;611&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot; code=&amp;quot;625&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot; code=&amp;quot;626&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipDigestAuthenticate vendor=&amp;quot;10415&amp;quot; code=&amp;quot;635&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;DigestRealm code=&amp;quot;104&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestAlgorithm code=&amp;quot;111&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestQop code=&amp;quot;110&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestHA1 code=&amp;quot;121&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/SipDigestAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIpAddr code=&amp;quot;8&amp;quot; format=&amp;quot;ipv4&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIPv6Prefix code=&amp;quot;97&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIfaceId code=&amp;quot;96&amp;quot; format=&amp;quot;uint64&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;LineIdentifier vendor=&amp;quot;13019&amp;quot; code=&amp;quot;500&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SipAuthDataItem&amp;gt;&lt;br /&gt;
  &amp;lt;SipNumberAuthItems vendor=&amp;quot;10415&amp;quot; code=&amp;quot;607&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/MultimediaAuthRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;MultimediaAuthRequest appid=&amp;quot;16777216&amp;quot; flags=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost&amp;gt;destination.ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm&amp;gt;ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;SipAuthDataItem vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;SipItemNumber vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SipItemNumber&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/SipAuthScheme&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthenticate vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthorization vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthorization&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthContext vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthContext&amp;gt;&lt;br /&gt;
    &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/ConfidentialityKey&amp;gt;&lt;br /&gt;
    &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/IntegrityKey&amp;gt;&lt;br /&gt;
    &amp;lt;SipDigestAuthenticate vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;DigestRealm&amp;gt;utf-8.string&amp;lt;/DigestRealm&amp;gt;&lt;br /&gt;
      &amp;lt;DigestAlgorithm&amp;gt;utf-8.string&amp;lt;/DigestAlgorithm&amp;gt;&lt;br /&gt;
      &amp;lt;DigestQop&amp;gt;utf-8.string&amp;lt;/DigestQop&amp;gt;&lt;br /&gt;
      &amp;lt;DigestHA1&amp;gt;utf-8.string&amp;lt;/DigestHA1&amp;gt;&lt;br /&gt;
    &amp;lt;/SipDigestAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIpAddr&amp;gt;1.2.3.4&amp;lt;/FramedIpAddr&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIPv6Prefix&amp;gt;1122554433aa22&amp;lt;/FramedIPv6Prefix&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIfaceId&amp;gt;0&amp;lt;/FramedIfaceId&amp;gt;&lt;br /&gt;
    &amp;lt;LineIdentifier vendor=&amp;quot;13019&amp;quot;&amp;gt;00554433aa&amp;lt;/LineIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;/SipAuthDataItem&amp;gt;&lt;br /&gt;
  &amp;lt;SipNumberAuthItems vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SipNumberAuthItems&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
 &amp;lt;/MultimediaAuthRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Answer ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;MultimediaAuthAnswer appid=&amp;quot;16777216&amp;quot; code=&amp;quot;303&amp;quot; shortName=&amp;quot;MAA&amp;quot; flags=&amp;quot;proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,need-result,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;ResultCode code=&amp;quot;268&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ExperimentalResult code=&amp;quot;297&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ExperimentalResultCode code=&amp;quot;298&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SipNumberAuthItems vendor=&amp;quot;10415&amp;quot; code=&amp;quot;607&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SipAuthDataItem vendor=&amp;quot;10415&amp;quot; code=&amp;quot;612&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;SipItemNumber vendor=&amp;quot;10415&amp;quot; code=&amp;quot;613&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot; code=&amp;quot;608&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthenticate vendor=&amp;quot;10415&amp;quot; code=&amp;quot;609&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthorization vendor=&amp;quot;10415&amp;quot; code=&amp;quot;610&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthContext vendor=&amp;quot;10415&amp;quot; code=&amp;quot;611&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot; code=&amp;quot;625&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot; code=&amp;quot;626&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipDigestAuthenticate vendor=&amp;quot;10415&amp;quot; code=&amp;quot;635&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;DigestRealm code=&amp;quot;104&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestAlgorithm code=&amp;quot;111&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestQop code=&amp;quot;110&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestHA1 code=&amp;quot;121&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/SipDigestAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIpAddr code=&amp;quot;8&amp;quot; format=&amp;quot;ipv4&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIPv6Prefix code=&amp;quot;97&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIfaceId code=&amp;quot;96&amp;quot; format=&amp;quot;uint64&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;LineIdentifier vendor=&amp;quot;13019&amp;quot; code=&amp;quot;500&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SipAuthDataItem&amp;gt;&lt;br /&gt;
 &amp;lt;/MultimediaAuthAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;MultimediaAuthAnswer appid=&amp;quot;16777216&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_state}&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;SipNumberAuthItems vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SipNumberAuthItems&amp;gt;&lt;br /&gt;
  &amp;lt;SipAuthDataItem vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;SipItemNumber vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SipItemNumber&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/SipAuthScheme&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthenticate vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthorization vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthorization&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthContext vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthContext&amp;gt;&lt;br /&gt;
    &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/ConfidentialityKey&amp;gt;&lt;br /&gt;
    &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/IntegrityKey&amp;gt;&lt;br /&gt;
    &amp;lt;SipDigestAuthenticate vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;DigestRealm&amp;gt;utf-8.string&amp;lt;/DigestRealm&amp;gt;&lt;br /&gt;
      &amp;lt;DigestAlgorithm&amp;gt;utf-8.string&amp;lt;/DigestAlgorithm&amp;gt;&lt;br /&gt;
      &amp;lt;DigestQop&amp;gt;utf-8.string&amp;lt;/DigestQop&amp;gt;&lt;br /&gt;
      &amp;lt;DigestHA1&amp;gt;utf-8.string&amp;lt;/DigestHA1&amp;gt;&lt;br /&gt;
    &amp;lt;/SipDigestAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIpAddr&amp;gt;1.2.3.4&amp;lt;/FramedIpAddr&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIPv6Prefix&amp;gt;1122554433aa22&amp;lt;/FramedIPv6Prefix&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIfaceId&amp;gt;0&amp;lt;/FramedIfaceId&amp;gt;&lt;br /&gt;
    &amp;lt;LineIdentifier vendor=&amp;quot;13019&amp;quot;&amp;gt;00554433aa&amp;lt;/LineIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;/SipAuthDataItem&amp;gt;&lt;br /&gt;
 &amp;lt;/MultimediaAuthAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== RegistrationTermination Command ==&lt;br /&gt;
&lt;br /&gt;
=== Request ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
 &amp;lt;RegistrationTerminationRequest appid=&amp;quot;16777216&amp;quot; code=&amp;quot;304&amp;quot; shortName=&amp;quot;RTR&amp;quot; flags=&amp;quot;request,proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost code=&amp;quot;293&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm code=&amp;quot;283&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedIdentities vendor=&amp;quot;10415&amp;quot; code=&amp;quot;632&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DeregistrationReason vendor=&amp;quot;10415&amp;quot; code=&amp;quot;615&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ReasonCode vendor=&amp;quot;10415&amp;quot; code=&amp;quot;616&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;dictionary&amp;gt;0=permanent 1=new-server-assigned 2=server-change 3=remove-s-cscf&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
    &amp;lt;/ReasonCode&amp;gt;&lt;br /&gt;
    &amp;lt;ReasonInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;617&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/DeregistrationReason&amp;gt;&lt;br /&gt;
 &amp;lt;/RegistrationTerminationRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;RegistrationTerminationRequest appid=&amp;quot;16777216&amp;quot; flags=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost&amp;gt;destination.ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm&amp;gt;ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedIdentities vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;DeregistrationReason vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ReasonCode vendor=&amp;quot;10415&amp;quot;&amp;gt;server-change&amp;lt;/ReasonCode&amp;gt;&lt;br /&gt;
    &amp;lt;ReasonInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ReasonInfo&amp;gt;&lt;br /&gt;
  &amp;lt;/DeregistrationReason&amp;gt;&lt;br /&gt;
 &amp;lt;/RegistrationTerminationRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Answer ===&lt;br /&gt;
&lt;br /&gt;
General schema: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;RegistrationTerminationAnswer appid=&amp;quot;16777216&amp;quot; code=&amp;quot;304&amp;quot; shortName=&amp;quot;RTA&amp;quot; flags=&amp;quot;proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,need-result,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;ResultCode code=&amp;quot;268&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ExperimentalResult code=&amp;quot;297&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ExperimentalResultCode code=&amp;quot;298&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedIdentities vendor=&amp;quot;10415&amp;quot; code=&amp;quot;632&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;IdentityWithEmergencyReg vendor=&amp;quot;10415&amp;quot; code=&amp;quot;651&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/IdentityWithEmergencyReg&amp;gt;&lt;br /&gt;
 &amp;lt;/RegistrationTerminationAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;RegistrationTerminationAnswer appid=&amp;quot;16777216&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_state}&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedIdentities vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;IdentityWithEmergencyReg vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
    &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;/IdentityWithEmergencyReg&amp;gt;&lt;br /&gt;
 &amp;lt;/RegistrationTerminationAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PushProfile Command ==&lt;br /&gt;
&lt;br /&gt;
=== Request ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;PushProfileRequest appid=&amp;quot;16777216&amp;quot; code=&amp;quot;305&amp;quot; shortName=&amp;quot;PPR&amp;quot; flags=&amp;quot;request,proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost code=&amp;quot;293&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm code=&amp;quot;283&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;UserData vendor=&amp;quot;10415&amp;quot; code=&amp;quot;606&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ChargingInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;618&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryEventChargingFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;619&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryEventChargingFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;620&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;621&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;622&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ChargingInfo&amp;gt;&lt;br /&gt;
  &amp;lt;SipAuthDataItem vendor=&amp;quot;10415&amp;quot; code=&amp;quot;612&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;SipItemNumber vendor=&amp;quot;10415&amp;quot; code=&amp;quot;613&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot; code=&amp;quot;608&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthenticate vendor=&amp;quot;10415&amp;quot; code=&amp;quot;609&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthorization vendor=&amp;quot;10415&amp;quot; code=&amp;quot;610&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthContext vendor=&amp;quot;10415&amp;quot; code=&amp;quot;611&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot; code=&amp;quot;625&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot; code=&amp;quot;626&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipDigestAuthenticate vendor=&amp;quot;10415&amp;quot; code=&amp;quot;635&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;DigestRealm code=&amp;quot;104&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestAlgorithm code=&amp;quot;111&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestQop code=&amp;quot;110&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestHA1 code=&amp;quot;121&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/SipDigestAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIpAddr code=&amp;quot;8&amp;quot; format=&amp;quot;ipv4&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIPv6Prefix code=&amp;quot;97&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIfaceId code=&amp;quot;96&amp;quot; format=&amp;quot;uint64&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;LineIdentifier vendor=&amp;quot;13019&amp;quot; code=&amp;quot;500&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SipAuthDataItem&amp;gt;&lt;br /&gt;
 &amp;lt;/PushProfileRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;PushProfileRequest appid=&amp;quot;16777216&amp;quot; flags=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost&amp;gt;destination.ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm&amp;gt;ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;UserData vendor=&amp;quot;10415&amp;quot;&amp;gt;&amp;lt;IMSSubscription/&amp;gt;&amp;lt;/UserData&amp;gt;&lt;br /&gt;
  &amp;lt;ChargingInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryEventChargingFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/PrimaryEventChargingFN&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryEventChargingFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/SecondaryEventChargingFN&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/PrimaryChargingCollectionFN&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/SecondaryChargingCollectionFN&amp;gt;&lt;br /&gt;
  &amp;lt;/ChargingInfo&amp;gt;&lt;br /&gt;
  &amp;lt;SipAuthDataItem vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;SipItemNumber vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SipItemNumber&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/SipAuthScheme&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthenticate vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthorization vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthorization&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthContext vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthContext&amp;gt;&lt;br /&gt;
    &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/ConfidentialityKey&amp;gt;&lt;br /&gt;
    &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/IntegrityKey&amp;gt;&lt;br /&gt;
    &amp;lt;SipDigestAuthenticate vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;DigestRealm&amp;gt;utf-8.string&amp;lt;/DigestRealm&amp;gt;&lt;br /&gt;
      &amp;lt;DigestAlgorithm&amp;gt;utf-8.string&amp;lt;/DigestAlgorithm&amp;gt;&lt;br /&gt;
      &amp;lt;DigestQop&amp;gt;utf-8.string&amp;lt;/DigestQop&amp;gt;&lt;br /&gt;
      &amp;lt;DigestHA1&amp;gt;utf-8.string&amp;lt;/DigestHA1&amp;gt;&lt;br /&gt;
    &amp;lt;/SipDigestAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIpAddr&amp;gt;1.2.3.4&amp;lt;/FramedIpAddr&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIPv6Prefix&amp;gt;1122554433aa22&amp;lt;/FramedIPv6Prefix&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIfaceId&amp;gt;0&amp;lt;/FramedIfaceId&amp;gt;&lt;br /&gt;
    &amp;lt;LineIdentifier vendor=&amp;quot;13019&amp;quot;&amp;gt;00554433aa&amp;lt;/LineIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;/SipAuthDataItem&amp;gt;&lt;br /&gt;
 &amp;lt;/PushProfileRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Answer ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;PushProfileAnswer appid=&amp;quot;16777216&amp;quot; code=&amp;quot;305&amp;quot; shortName=&amp;quot;PPA&amp;quot; flags=&amp;quot;proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,need-result,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;ResultCode code=&amp;quot;268&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ExperimentalResult code=&amp;quot;297&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ExperimentalResultCode code=&amp;quot;298&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
 &amp;lt;/PushProfileAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;PushProfileAnswer appid=&amp;quot;16777216&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_state}&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
 &amp;lt;/PushProfileAnswer&amp;gt;&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/Cx/Dx</id>
		<title>Cx/Dx</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/Cx/Dx"/>
				<updated>2022-03-10T14:22:50Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: /* Answer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
&lt;br /&gt;
This page shows as examples Diameter XMLs for the Cx/Dx interface&amp;lt;br&amp;gt;&lt;br /&gt;
Application id: 16777216&amp;lt;br&amp;gt;&lt;br /&gt;
Vendor id: 10415&lt;br /&gt;
&lt;br /&gt;
'''NOTES:''':&lt;br /&gt;
* The examples below are not consistent with CSCF/HSS functionality. Their parameters are present here to be seen.&lt;br /&gt;
* In the following examples a ''${str}'' means its value must be reflected from received message. E.g. ''${hhident}'' must be set from received message ''hhident'' parameter.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UserAuthorization Command ==&lt;br /&gt;
&lt;br /&gt;
=== Request ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;UserAuthorizationRequest appid=&amp;quot;16777216&amp;quot; code=&amp;quot;300&amp;quot; shortName=&amp;quot;UAR&amp;quot; flags=&amp;quot;request,proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost code=&amp;quot;293&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm code=&amp;quot;283&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VisitedNetworkIdentifier vendor=&amp;quot;10415&amp;quot; code=&amp;quot;600&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;UserAuthzType vendor=&amp;quot;10415&amp;quot; code=&amp;quot;623&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=register 1=unregister 2=register-and-caps&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/UserAuthzType&amp;gt;&lt;br /&gt;
  &amp;lt;UARFlags vendor=&amp;quot;10415&amp;quot; code=&amp;quot;637&amp;quot; format=&amp;quot;flags32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;0=emergency-register&amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
  &amp;lt;/UARFlags&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;UserAuthorizationRequest appid=&amp;quot;16777216&amp;quot; flags=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost&amp;gt;destination.ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm&amp;gt;ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;VisitedNetworkIdentifier vendor=&amp;quot;10415&amp;quot;&amp;gt;6578616d706c652e636f6d&amp;lt;/VisitedNetworkIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;UserAuthzType vendor=&amp;quot;10415&amp;quot;&amp;gt;register&amp;lt;/UserAuthzType&amp;gt;&lt;br /&gt;
  &amp;lt;UARFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;emergency-register&amp;lt;/UARFlags&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Answer ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;UserAuthorizationAnswer appid=&amp;quot;16777216&amp;quot; code=&amp;quot;300&amp;quot; shortName=&amp;quot;UAA&amp;quot; flags=&amp;quot;proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,need-result,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;ResultCode code=&amp;quot;268&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ExperimentalResult code=&amp;quot;297&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ExperimentalResultCode code=&amp;quot;298&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ServerCaps vendor=&amp;quot;10415&amp;quot; code=&amp;quot;603&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;MandatoryCaps vendor=&amp;quot;10415&amp;quot; code=&amp;quot;604&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;OptionalCaps vendor=&amp;quot;10415&amp;quot; code=&amp;quot;605&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ServerCaps&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;UserAuthorizationAnswer appid=&amp;quot;16777216&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_state}&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;ServerCaps vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;MandatoryCaps vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/MandatoryCaps&amp;gt;&lt;br /&gt;
    &amp;lt;OptionalCaps vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/OptionalCaps&amp;gt;&lt;br /&gt;
    &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;/ServerCaps&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ServerAssignment Command ==&lt;br /&gt;
&lt;br /&gt;
=== Request ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ServerAssignmentRequest appid=&amp;quot;16777216&amp;quot; code=&amp;quot;301&amp;quot; shortName=&amp;quot;SAR&amp;quot; flags=&amp;quot;request,proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost code=&amp;quot;293&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm code=&amp;quot;283&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;WildcardedPublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;634&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ServerAssignType vendor=&amp;quot;10415&amp;quot; code=&amp;quot;614&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=none 1=register 2=re-register 3=unregistered-user 4=timeout-unregister 5=unregistered 6=timeout-unregister-store-server 7=unregistered-store-server 8=admin-unregister 9=noauth 10=auth-timeout 11=unregister-too-much-data 12=aaa-user-data-request 13=pgw-update 14=restoration&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/ServerAssignType&amp;gt;&lt;br /&gt;
  &amp;lt;UserDataAlreadyAvailable vendor=&amp;quot;10415&amp;quot; code=&amp;quot;624&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=no 1=yes&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/UserDataAlreadyAvailable&amp;gt;&lt;br /&gt;
  &amp;lt;ScscfRestorationInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;639&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;RestorationInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;649&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Path vendor=&amp;quot;10415&amp;quot; code=&amp;quot;640&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;Contact vendor=&amp;quot;10415&amp;quot; code=&amp;quot;641&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;SubscriptionInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;642&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CallIdSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;643&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;FromSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;644&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;ToSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;645&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;RecordRoute vendor=&amp;quot;10415&amp;quot; code=&amp;quot;646&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Contact vendor=&amp;quot;10415&amp;quot; code=&amp;quot;641&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/SubscriptionInfo&amp;gt;&lt;br /&gt;
    &amp;lt;/RestorationInfo&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot; code=&amp;quot;608&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ScscfRestorationInfo&amp;gt;&lt;br /&gt;
  &amp;lt;MultipleReg vendor=&amp;quot;10415&amp;quot; code=&amp;quot;648&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=no 1=yes&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/MultipleReg&amp;gt;&lt;br /&gt;
  &amp;lt;SessionPriority vendor=&amp;quot;10415&amp;quot; code=&amp;quot;650&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/ServerAssignmentRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;ServerAssignmentRequest appid=&amp;quot;16777216&amp;quot; flags=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost&amp;gt;destination.ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm&amp;gt;ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;WildcardedPublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/WildcardedPublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;ServerAssignType vendor=&amp;quot;10415&amp;quot;&amp;gt;register&amp;lt;/ServerAssignType&amp;gt;&lt;br /&gt;
  &amp;lt;UserDataAlreadyAvailable vendor=&amp;quot;10415&amp;quot;&amp;gt;true&amp;lt;/UserDataAlreadyAvailable&amp;gt;&lt;br /&gt;
  &amp;lt;ScscfRestorationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
    &amp;lt;RestorationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Path vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Path&amp;gt;&lt;br /&gt;
      &amp;lt;Contact vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Contact&amp;gt;&lt;br /&gt;
      &amp;lt;SubscriptionInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CallIdSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/CallIdSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;FromSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/FromSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;ToSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/ToSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;RecordRoute vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/RecordRoute&amp;gt;&lt;br /&gt;
        &amp;lt;Contact vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Contact&amp;gt;&lt;br /&gt;
      &amp;lt;/SubscriptionInfo&amp;gt;&lt;br /&gt;
    &amp;lt;/RestorationInfo&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/SipAuthScheme&amp;gt;&lt;br /&gt;
  &amp;lt;/ScscfRestorationInfo&amp;gt;&lt;br /&gt;
  &amp;lt;MultipleReg vendor=&amp;quot;10415&amp;quot;&amp;gt;false&amp;lt;/MultipleReg&amp;gt;&lt;br /&gt;
  &amp;lt;SessionPriority vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SessionPriority&amp;gt;&lt;br /&gt;
 &amp;lt;/ServerAssignmentRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Answer ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ServerAssignmentAnswer appid=&amp;quot;16777216&amp;quot; code=&amp;quot;301&amp;quot; shortName=&amp;quot;SAA&amp;quot; flags=&amp;quot;proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,need-result,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;ResultCode code=&amp;quot;268&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ExperimentalResult code=&amp;quot;297&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ExperimentalResultCode code=&amp;quot;298&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;UserData vendor=&amp;quot;10415&amp;quot; code=&amp;quot;606&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ChargingInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;618&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryEventChargingFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;619&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryEventChargingFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;620&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;621&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;622&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ChargingInfo&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedIdentities vendor=&amp;quot;10415&amp;quot; code=&amp;quot;632&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;LooseRoute vendor=&amp;quot;10415&amp;quot; code=&amp;quot;638&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=no 1=yes&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/LooseRoute&amp;gt;&lt;br /&gt;
  &amp;lt;ScscfRestorationInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;639&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;RestorationInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;649&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Path vendor=&amp;quot;10415&amp;quot; code=&amp;quot;640&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;Contact vendor=&amp;quot;10415&amp;quot; code=&amp;quot;641&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;SubscriptionInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;642&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CallIdSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;643&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;FromSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;644&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;ToSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;645&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;RecordRoute vendor=&amp;quot;10415&amp;quot; code=&amp;quot;646&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Contact vendor=&amp;quot;10415&amp;quot; code=&amp;quot;641&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/SubscriptionInfo&amp;gt;&lt;br /&gt;
    &amp;lt;/RestorationInfo&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot; code=&amp;quot;608&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ScscfRestorationInfo&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedRegisteredIdentities vendor=&amp;quot;10415&amp;quot; code=&amp;quot;647&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedRegisteredIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;WildcardedPublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;634&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;PriviledgedSender vendor=&amp;quot;10415&amp;quot; code=&amp;quot;652&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=no 1=yes&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/PriviledgedSender&amp;gt;&lt;br /&gt;
 &amp;lt;/ServerAssignmentAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;ServerAssignmentAnswer appid=&amp;quot;16777216&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_state}&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;UserData vendor=&amp;quot;10415&amp;quot;&amp;gt;&amp;lt;IMSSubscription/&amp;gt;&amp;lt;/UserData&amp;gt;&lt;br /&gt;
  &amp;lt;ChargingInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryEventChargingFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/PrimaryEventChargingFN&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryEventChargingFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/SecondaryEventChargingFN&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/PrimaryChargingCollectionFN&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/SecondaryChargingCollectionFN&amp;gt;&lt;br /&gt;
  &amp;lt;/ChargingInfo&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedIdentities vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;LooseRoute vendor=&amp;quot;10415&amp;quot;&amp;gt;true&amp;lt;/LooseRoute&amp;gt;&lt;br /&gt;
  &amp;lt;ScscfRestorationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
    &amp;lt;RestorationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Path vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Path&amp;gt;&lt;br /&gt;
      &amp;lt;Contact vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Contact&amp;gt;&lt;br /&gt;
      &amp;lt;SubscriptionInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CallIdSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/CallIdSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;FromSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/FromSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;ToSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/ToSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;RecordRoute vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/RecordRoute&amp;gt;&lt;br /&gt;
        &amp;lt;Contact vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Contact&amp;gt;&lt;br /&gt;
      &amp;lt;/SubscriptionInfo&amp;gt;&lt;br /&gt;
    &amp;lt;/RestorationInfo&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/SipAuthScheme&amp;gt;&lt;br /&gt;
  &amp;lt;/ScscfRestorationInfo&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedRegisteredIdentities vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedRegisteredIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;WildcardedPublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/WildcardedPublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;PriviledgedSender vendor=&amp;quot;10415&amp;quot;&amp;gt;true&amp;lt;/PriviledgedSender&amp;gt;&lt;br /&gt;
 &amp;lt;/ServerAssignmentAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MultimediaAuth Command ==&lt;br /&gt;
&lt;br /&gt;
=== Request ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;MultimediaAuthRequest appid=&amp;quot;16777216&amp;quot; code=&amp;quot;303&amp;quot; shortName=&amp;quot;MAR&amp;quot; flags=&amp;quot;request,proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost code=&amp;quot;293&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm code=&amp;quot;283&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SipAuthDataItem vendor=&amp;quot;10415&amp;quot; code=&amp;quot;612&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;SipItemNumber vendor=&amp;quot;10415&amp;quot; code=&amp;quot;613&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot; code=&amp;quot;608&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthenticate vendor=&amp;quot;10415&amp;quot; code=&amp;quot;609&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthorization vendor=&amp;quot;10415&amp;quot; code=&amp;quot;610&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthContext vendor=&amp;quot;10415&amp;quot; code=&amp;quot;611&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot; code=&amp;quot;625&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot; code=&amp;quot;626&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipDigestAuthenticate vendor=&amp;quot;10415&amp;quot; code=&amp;quot;635&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;DigestRealm code=&amp;quot;104&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestAlgorithm code=&amp;quot;111&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestQop code=&amp;quot;110&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestHA1 code=&amp;quot;121&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/SipDigestAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIpAddr code=&amp;quot;8&amp;quot; format=&amp;quot;ipv4&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIPv6Prefix code=&amp;quot;97&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIfaceId code=&amp;quot;96&amp;quot; format=&amp;quot;uint64&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;LineIdentifier vendor=&amp;quot;13019&amp;quot; code=&amp;quot;500&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SipAuthDataItem&amp;gt;&lt;br /&gt;
  &amp;lt;SipNumberAuthItems vendor=&amp;quot;10415&amp;quot; code=&amp;quot;607&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/MultimediaAuthRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;MultimediaAuthRequest appid=&amp;quot;16777216&amp;quot; flags=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost&amp;gt;destination.ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm&amp;gt;ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;SipAuthDataItem vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;SipItemNumber vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SipItemNumber&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/SipAuthScheme&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthenticate vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthorization vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthorization&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthContext vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthContext&amp;gt;&lt;br /&gt;
    &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/ConfidentialityKey&amp;gt;&lt;br /&gt;
    &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/IntegrityKey&amp;gt;&lt;br /&gt;
    &amp;lt;SipDigestAuthenticate vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;DigestRealm&amp;gt;utf-8.string&amp;lt;/DigestRealm&amp;gt;&lt;br /&gt;
      &amp;lt;DigestAlgorithm&amp;gt;utf-8.string&amp;lt;/DigestAlgorithm&amp;gt;&lt;br /&gt;
      &amp;lt;DigestQop&amp;gt;utf-8.string&amp;lt;/DigestQop&amp;gt;&lt;br /&gt;
      &amp;lt;DigestHA1&amp;gt;utf-8.string&amp;lt;/DigestHA1&amp;gt;&lt;br /&gt;
    &amp;lt;/SipDigestAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIpAddr&amp;gt;1.2.3.4&amp;lt;/FramedIpAddr&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIPv6Prefix&amp;gt;1122554433aa22&amp;lt;/FramedIPv6Prefix&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIfaceId&amp;gt;0&amp;lt;/FramedIfaceId&amp;gt;&lt;br /&gt;
    &amp;lt;LineIdentifier vendor=&amp;quot;13019&amp;quot;&amp;gt;00554433aa&amp;lt;/LineIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;/SipAuthDataItem&amp;gt;&lt;br /&gt;
  &amp;lt;SipNumberAuthItems vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SipNumberAuthItems&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
 &amp;lt;/MultimediaAuthRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Answer ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;MultimediaAuthAnswer appid=&amp;quot;16777216&amp;quot; code=&amp;quot;303&amp;quot; shortName=&amp;quot;MAA&amp;quot; flags=&amp;quot;proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,need-result,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;ResultCode code=&amp;quot;268&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ExperimentalResult code=&amp;quot;297&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ExperimentalResultCode code=&amp;quot;298&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SipNumberAuthItems vendor=&amp;quot;10415&amp;quot; code=&amp;quot;607&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SipAuthDataItem vendor=&amp;quot;10415&amp;quot; code=&amp;quot;612&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;SipItemNumber vendor=&amp;quot;10415&amp;quot; code=&amp;quot;613&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot; code=&amp;quot;608&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthenticate vendor=&amp;quot;10415&amp;quot; code=&amp;quot;609&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthorization vendor=&amp;quot;10415&amp;quot; code=&amp;quot;610&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthContext vendor=&amp;quot;10415&amp;quot; code=&amp;quot;611&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot; code=&amp;quot;625&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot; code=&amp;quot;626&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipDigestAuthenticate vendor=&amp;quot;10415&amp;quot; code=&amp;quot;635&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;DigestRealm code=&amp;quot;104&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestAlgorithm code=&amp;quot;111&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestQop code=&amp;quot;110&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestHA1 code=&amp;quot;121&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/SipDigestAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIpAddr code=&amp;quot;8&amp;quot; format=&amp;quot;ipv4&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIPv6Prefix code=&amp;quot;97&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIfaceId code=&amp;quot;96&amp;quot; format=&amp;quot;uint64&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;LineIdentifier vendor=&amp;quot;13019&amp;quot; code=&amp;quot;500&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SipAuthDataItem&amp;gt;&lt;br /&gt;
 &amp;lt;/MultimediaAuthAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;MultimediaAuthAnswer appid=&amp;quot;16777216&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_state}&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;SipNumberAuthItems vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SipNumberAuthItems&amp;gt;&lt;br /&gt;
  &amp;lt;SipAuthDataItem vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;SipItemNumber vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SipItemNumber&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/SipAuthScheme&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthenticate vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthorization vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthorization&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthContext vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthContext&amp;gt;&lt;br /&gt;
    &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/ConfidentialityKey&amp;gt;&lt;br /&gt;
    &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/IntegrityKey&amp;gt;&lt;br /&gt;
    &amp;lt;SipDigestAuthenticate vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;DigestRealm&amp;gt;utf-8.string&amp;lt;/DigestRealm&amp;gt;&lt;br /&gt;
      &amp;lt;DigestAlgorithm&amp;gt;utf-8.string&amp;lt;/DigestAlgorithm&amp;gt;&lt;br /&gt;
      &amp;lt;DigestQop&amp;gt;utf-8.string&amp;lt;/DigestQop&amp;gt;&lt;br /&gt;
      &amp;lt;DigestHA1&amp;gt;utf-8.string&amp;lt;/DigestHA1&amp;gt;&lt;br /&gt;
    &amp;lt;/SipDigestAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIpAddr&amp;gt;1.2.3.4&amp;lt;/FramedIpAddr&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIPv6Prefix&amp;gt;1122554433aa22&amp;lt;/FramedIPv6Prefix&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIfaceId&amp;gt;0&amp;lt;/FramedIfaceId&amp;gt;&lt;br /&gt;
    &amp;lt;LineIdentifier vendor=&amp;quot;13019&amp;quot;&amp;gt;00554433aa&amp;lt;/LineIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;/SipAuthDataItem&amp;gt;&lt;br /&gt;
 &amp;lt;/MultimediaAuthAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== RegistrationTermination Command ==&lt;br /&gt;
&lt;br /&gt;
=== Request ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
 &amp;lt;RegistrationTerminationRequest appid=&amp;quot;16777216&amp;quot; code=&amp;quot;304&amp;quot; shortName=&amp;quot;RTR&amp;quot; flags=&amp;quot;request,proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost code=&amp;quot;293&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm code=&amp;quot;283&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedIdentities vendor=&amp;quot;10415&amp;quot; code=&amp;quot;632&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DeregistrationReason vendor=&amp;quot;10415&amp;quot; code=&amp;quot;615&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ReasonCode vendor=&amp;quot;10415&amp;quot; code=&amp;quot;616&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;dictionary&amp;gt;0=permanent 1=new-server-assigned 2=server-change 3=remove-s-cscf&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
    &amp;lt;/ReasonCode&amp;gt;&lt;br /&gt;
    &amp;lt;ReasonInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;617&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/DeregistrationReason&amp;gt;&lt;br /&gt;
 &amp;lt;/RegistrationTerminationRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;RegistrationTerminationRequest appid=&amp;quot;16777216&amp;quot; flags=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost&amp;gt;destination.ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm&amp;gt;ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedIdentities vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;DeregistrationReason vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ReasonCode vendor=&amp;quot;10415&amp;quot;&amp;gt;server-change&amp;lt;/ReasonCode&amp;gt;&lt;br /&gt;
    &amp;lt;ReasonInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ReasonInfo&amp;gt;&lt;br /&gt;
  &amp;lt;/DeregistrationReason&amp;gt;&lt;br /&gt;
 &amp;lt;/RegistrationTerminationRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Answer ===&lt;br /&gt;
&lt;br /&gt;
General schema: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;RegistrationTerminationAnswer appid=&amp;quot;16777216&amp;quot; code=&amp;quot;304&amp;quot; shortName=&amp;quot;RTA&amp;quot; flags=&amp;quot;proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,need-result,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;ResultCode code=&amp;quot;268&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ExperimentalResult code=&amp;quot;297&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ExperimentalResultCode code=&amp;quot;298&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedIdentities vendor=&amp;quot;10415&amp;quot; code=&amp;quot;632&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;IdentityWithEmergencyReg vendor=&amp;quot;10415&amp;quot; code=&amp;quot;651&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/IdentityWithEmergencyReg&amp;gt;&lt;br /&gt;
 &amp;lt;/RegistrationTerminationAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;RegistrationTerminationAnswer appid=&amp;quot;16777216&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_state}&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedIdentities vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;IdentityWithEmergencyReg vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
    &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;/IdentityWithEmergencyReg&amp;gt;&lt;br /&gt;
 &amp;lt;/RegistrationTerminationAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PushProfile Command ==&lt;br /&gt;
&lt;br /&gt;
=== Request ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;PushProfileRequest appid=&amp;quot;16777216&amp;quot; code=&amp;quot;305&amp;quot; shortName=&amp;quot;PPR&amp;quot; flags=&amp;quot;request,proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost code=&amp;quot;293&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm code=&amp;quot;283&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;UserData vendor=&amp;quot;10415&amp;quot; code=&amp;quot;606&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ChargingInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;618&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryEventChargingFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;619&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryEventChargingFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;620&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;621&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;622&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ChargingInfo&amp;gt;&lt;br /&gt;
  &amp;lt;SipAuthDataItem vendor=&amp;quot;10415&amp;quot; code=&amp;quot;612&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;SipItemNumber vendor=&amp;quot;10415&amp;quot; code=&amp;quot;613&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot; code=&amp;quot;608&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthenticate vendor=&amp;quot;10415&amp;quot; code=&amp;quot;609&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthorization vendor=&amp;quot;10415&amp;quot; code=&amp;quot;610&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthContext vendor=&amp;quot;10415&amp;quot; code=&amp;quot;611&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot; code=&amp;quot;625&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot; code=&amp;quot;626&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipDigestAuthenticate vendor=&amp;quot;10415&amp;quot; code=&amp;quot;635&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;DigestRealm code=&amp;quot;104&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestAlgorithm code=&amp;quot;111&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestQop code=&amp;quot;110&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestHA1 code=&amp;quot;121&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/SipDigestAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIpAddr code=&amp;quot;8&amp;quot; format=&amp;quot;ipv4&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIPv6Prefix code=&amp;quot;97&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIfaceId code=&amp;quot;96&amp;quot; format=&amp;quot;uint64&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;LineIdentifier vendor=&amp;quot;13019&amp;quot; code=&amp;quot;500&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SipAuthDataItem&amp;gt;&lt;br /&gt;
 &amp;lt;/PushProfileRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;PushProfileRequest appid=&amp;quot;16777216&amp;quot; flags=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost&amp;gt;destination.ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm&amp;gt;ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;UserData vendor=&amp;quot;10415&amp;quot;&amp;gt;&amp;lt;IMSSubscription/&amp;gt;&amp;lt;/UserData&amp;gt;&lt;br /&gt;
  &amp;lt;ChargingInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryEventChargingFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/PrimaryEventChargingFN&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryEventChargingFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/SecondaryEventChargingFN&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/PrimaryChargingCollectionFN&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/SecondaryChargingCollectionFN&amp;gt;&lt;br /&gt;
  &amp;lt;/ChargingInfo&amp;gt;&lt;br /&gt;
  &amp;lt;SipAuthDataItem vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;SipItemNumber vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SipItemNumber&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/SipAuthScheme&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthenticate vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthorization vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthorization&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthContext vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthContext&amp;gt;&lt;br /&gt;
    &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/ConfidentialityKey&amp;gt;&lt;br /&gt;
    &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/IntegrityKey&amp;gt;&lt;br /&gt;
    &amp;lt;SipDigestAuthenticate vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;DigestRealm&amp;gt;utf-8.string&amp;lt;/DigestRealm&amp;gt;&lt;br /&gt;
      &amp;lt;DigestAlgorithm&amp;gt;utf-8.string&amp;lt;/DigestAlgorithm&amp;gt;&lt;br /&gt;
      &amp;lt;DigestQop&amp;gt;utf-8.string&amp;lt;/DigestQop&amp;gt;&lt;br /&gt;
      &amp;lt;DigestHA1&amp;gt;utf-8.string&amp;lt;/DigestHA1&amp;gt;&lt;br /&gt;
    &amp;lt;/SipDigestAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIpAddr&amp;gt;1.2.3.4&amp;lt;/FramedIpAddr&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIPv6Prefix&amp;gt;1122554433aa22&amp;lt;/FramedIPv6Prefix&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIfaceId&amp;gt;0&amp;lt;/FramedIfaceId&amp;gt;&lt;br /&gt;
    &amp;lt;LineIdentifier vendor=&amp;quot;13019&amp;quot;&amp;gt;00554433aa&amp;lt;/LineIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;/SipAuthDataItem&amp;gt;&lt;br /&gt;
 &amp;lt;/PushProfileRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Answer ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;PushProfileAnswer appid=&amp;quot;16777216&amp;quot; code=&amp;quot;305&amp;quot; shortName=&amp;quot;PPA&amp;quot; flags=&amp;quot;proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,need-result,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;ResultCode code=&amp;quot;268&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ExperimentalResult code=&amp;quot;297&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ExperimentalResultCode code=&amp;quot;298&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
 &amp;lt;/PushProfileAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;PushProfileAnswer appid=&amp;quot;16777216&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_state}&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
 &amp;lt;/PushProfileAnswer&amp;gt;&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/Cx/Dx</id>
		<title>Cx/Dx</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/Cx/Dx"/>
				<updated>2022-03-10T14:16:44Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: /* Answer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
&lt;br /&gt;
This page shows as examples Diameter XMLs for the Cx/Dx interface&amp;lt;br&amp;gt;&lt;br /&gt;
Application id: 16777216&amp;lt;br&amp;gt;&lt;br /&gt;
Vendor id: 10415&lt;br /&gt;
&lt;br /&gt;
'''NOTES:''':&lt;br /&gt;
* The examples below are not consistent with CSCF/HSS functionality. Their parameters are present here to be seen.&lt;br /&gt;
* In the following examples a ''${str}'' means its value must be reflected from received message. E.g. ''${hhident}'' must be set from received message ''hhident'' parameter.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UserAuthorization Command ==&lt;br /&gt;
&lt;br /&gt;
=== Request ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;UserAuthorizationRequest appid=&amp;quot;16777216&amp;quot; code=&amp;quot;300&amp;quot; shortName=&amp;quot;UAR&amp;quot; flags=&amp;quot;request,proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost code=&amp;quot;293&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm code=&amp;quot;283&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VisitedNetworkIdentifier vendor=&amp;quot;10415&amp;quot; code=&amp;quot;600&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;UserAuthzType vendor=&amp;quot;10415&amp;quot; code=&amp;quot;623&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=register 1=unregister 2=register-and-caps&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/UserAuthzType&amp;gt;&lt;br /&gt;
  &amp;lt;UARFlags vendor=&amp;quot;10415&amp;quot; code=&amp;quot;637&amp;quot; format=&amp;quot;flags32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;0=emergency-register&amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
  &amp;lt;/UARFlags&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;UserAuthorizationRequest appid=&amp;quot;16777216&amp;quot; flags=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost&amp;gt;destination.ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm&amp;gt;ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;VisitedNetworkIdentifier vendor=&amp;quot;10415&amp;quot;&amp;gt;6578616d706c652e636f6d&amp;lt;/VisitedNetworkIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;UserAuthzType vendor=&amp;quot;10415&amp;quot;&amp;gt;register&amp;lt;/UserAuthzType&amp;gt;&lt;br /&gt;
  &amp;lt;UARFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;emergency-register&amp;lt;/UARFlags&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Answer ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;UserAuthorizationAnswer appid=&amp;quot;16777216&amp;quot; code=&amp;quot;300&amp;quot; shortName=&amp;quot;UAA&amp;quot; flags=&amp;quot;proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,need-result,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;ResultCode code=&amp;quot;268&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ExperimentalResult code=&amp;quot;297&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ExperimentalResultCode code=&amp;quot;298&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ServerCaps vendor=&amp;quot;10415&amp;quot; code=&amp;quot;603&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;MandatoryCaps vendor=&amp;quot;10415&amp;quot; code=&amp;quot;604&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;OptionalCaps vendor=&amp;quot;10415&amp;quot; code=&amp;quot;605&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ServerCaps&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;UserAuthorizationAnswer appid=&amp;quot;16777216&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_state}&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;ServerCaps vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;MandatoryCaps vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/MandatoryCaps&amp;gt;&lt;br /&gt;
    &amp;lt;OptionalCaps vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/OptionalCaps&amp;gt;&lt;br /&gt;
    &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;/ServerCaps&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ServerAssignment Command ==&lt;br /&gt;
&lt;br /&gt;
=== Request ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ServerAssignmentRequest appid=&amp;quot;16777216&amp;quot; code=&amp;quot;301&amp;quot; shortName=&amp;quot;SAR&amp;quot; flags=&amp;quot;request,proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost code=&amp;quot;293&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm code=&amp;quot;283&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;WildcardedPublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;634&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ServerAssignType vendor=&amp;quot;10415&amp;quot; code=&amp;quot;614&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=none 1=register 2=re-register 3=unregistered-user 4=timeout-unregister 5=unregistered 6=timeout-unregister-store-server 7=unregistered-store-server 8=admin-unregister 9=noauth 10=auth-timeout 11=unregister-too-much-data 12=aaa-user-data-request 13=pgw-update 14=restoration&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/ServerAssignType&amp;gt;&lt;br /&gt;
  &amp;lt;UserDataAlreadyAvailable vendor=&amp;quot;10415&amp;quot; code=&amp;quot;624&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=no 1=yes&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/UserDataAlreadyAvailable&amp;gt;&lt;br /&gt;
  &amp;lt;ScscfRestorationInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;639&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;RestorationInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;649&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Path vendor=&amp;quot;10415&amp;quot; code=&amp;quot;640&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;Contact vendor=&amp;quot;10415&amp;quot; code=&amp;quot;641&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;SubscriptionInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;642&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CallIdSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;643&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;FromSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;644&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;ToSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;645&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;RecordRoute vendor=&amp;quot;10415&amp;quot; code=&amp;quot;646&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Contact vendor=&amp;quot;10415&amp;quot; code=&amp;quot;641&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/SubscriptionInfo&amp;gt;&lt;br /&gt;
    &amp;lt;/RestorationInfo&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot; code=&amp;quot;608&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ScscfRestorationInfo&amp;gt;&lt;br /&gt;
  &amp;lt;MultipleReg vendor=&amp;quot;10415&amp;quot; code=&amp;quot;648&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=no 1=yes&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/MultipleReg&amp;gt;&lt;br /&gt;
  &amp;lt;SessionPriority vendor=&amp;quot;10415&amp;quot; code=&amp;quot;650&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/ServerAssignmentRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;ServerAssignmentRequest appid=&amp;quot;16777216&amp;quot; flags=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost&amp;gt;destination.ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm&amp;gt;ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;WildcardedPublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/WildcardedPublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;ServerAssignType vendor=&amp;quot;10415&amp;quot;&amp;gt;register&amp;lt;/ServerAssignType&amp;gt;&lt;br /&gt;
  &amp;lt;UserDataAlreadyAvailable vendor=&amp;quot;10415&amp;quot;&amp;gt;true&amp;lt;/UserDataAlreadyAvailable&amp;gt;&lt;br /&gt;
  &amp;lt;ScscfRestorationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
    &amp;lt;RestorationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Path vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Path&amp;gt;&lt;br /&gt;
      &amp;lt;Contact vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Contact&amp;gt;&lt;br /&gt;
      &amp;lt;SubscriptionInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CallIdSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/CallIdSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;FromSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/FromSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;ToSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/ToSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;RecordRoute vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/RecordRoute&amp;gt;&lt;br /&gt;
        &amp;lt;Contact vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Contact&amp;gt;&lt;br /&gt;
      &amp;lt;/SubscriptionInfo&amp;gt;&lt;br /&gt;
    &amp;lt;/RestorationInfo&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/SipAuthScheme&amp;gt;&lt;br /&gt;
  &amp;lt;/ScscfRestorationInfo&amp;gt;&lt;br /&gt;
  &amp;lt;MultipleReg vendor=&amp;quot;10415&amp;quot;&amp;gt;false&amp;lt;/MultipleReg&amp;gt;&lt;br /&gt;
  &amp;lt;SessionPriority vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SessionPriority&amp;gt;&lt;br /&gt;
 &amp;lt;/ServerAssignmentRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Answer ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ServerAssignmentAnswer appid=&amp;quot;16777216&amp;quot; code=&amp;quot;301&amp;quot; shortName=&amp;quot;SAA&amp;quot; flags=&amp;quot;proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,need-result,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;ResultCode code=&amp;quot;268&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ExperimentalResult code=&amp;quot;297&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ExperimentalResultCode code=&amp;quot;298&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;UserData vendor=&amp;quot;10415&amp;quot; code=&amp;quot;606&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ChargingInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;618&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryEventChargingFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;619&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryEventChargingFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;620&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;621&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;622&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ChargingInfo&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedIdentities vendor=&amp;quot;10415&amp;quot; code=&amp;quot;632&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;LooseRoute vendor=&amp;quot;10415&amp;quot; code=&amp;quot;638&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=no 1=yes&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/LooseRoute&amp;gt;&lt;br /&gt;
  &amp;lt;ScscfRestorationInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;639&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;RestorationInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;649&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Path vendor=&amp;quot;10415&amp;quot; code=&amp;quot;640&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;Contact vendor=&amp;quot;10415&amp;quot; code=&amp;quot;641&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;SubscriptionInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;642&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CallIdSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;643&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;FromSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;644&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;ToSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;645&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;RecordRoute vendor=&amp;quot;10415&amp;quot; code=&amp;quot;646&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Contact vendor=&amp;quot;10415&amp;quot; code=&amp;quot;641&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/SubscriptionInfo&amp;gt;&lt;br /&gt;
    &amp;lt;/RestorationInfo&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot; code=&amp;quot;608&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ScscfRestorationInfo&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedRegisteredIdentities vendor=&amp;quot;10415&amp;quot; code=&amp;quot;647&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedRegisteredIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;WildcardedPublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;634&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;PriviledgedSender vendor=&amp;quot;10415&amp;quot; code=&amp;quot;652&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=no 1=yes&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/PriviledgedSender&amp;gt;&lt;br /&gt;
 &amp;lt;/ServerAssignmentAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;ServerAssignmentAnswer appid=&amp;quot;16777216&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_state}&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;UserData vendor=&amp;quot;10415&amp;quot;&amp;gt;&amp;lt;IMSSubscription/&amp;gt;&amp;lt;/UserData&amp;gt;&lt;br /&gt;
  &amp;lt;ChargingInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryEventChargingFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/PrimaryEventChargingFN&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryEventChargingFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/SecondaryEventChargingFN&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/PrimaryChargingCollectionFN&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/SecondaryChargingCollectionFN&amp;gt;&lt;br /&gt;
  &amp;lt;/ChargingInfo&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedIdentities vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;LooseRoute vendor=&amp;quot;10415&amp;quot;&amp;gt;true&amp;lt;/LooseRoute&amp;gt;&lt;br /&gt;
  &amp;lt;ScscfRestorationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
    &amp;lt;RestorationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Path vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Path&amp;gt;&lt;br /&gt;
      &amp;lt;Contact vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Contact&amp;gt;&lt;br /&gt;
      &amp;lt;SubscriptionInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CallIdSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/CallIdSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;FromSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/FromSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;ToSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/ToSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;RecordRoute vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/RecordRoute&amp;gt;&lt;br /&gt;
        &amp;lt;Contact vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Contact&amp;gt;&lt;br /&gt;
      &amp;lt;/SubscriptionInfo&amp;gt;&lt;br /&gt;
    &amp;lt;/RestorationInfo&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/SipAuthScheme&amp;gt;&lt;br /&gt;
  &amp;lt;/ScscfRestorationInfo&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedRegisteredIdentities vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedRegisteredIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;WildcardedPublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/WildcardedPublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;PriviledgedSender vendor=&amp;quot;10415&amp;quot;&amp;gt;true&amp;lt;/PriviledgedSender&amp;gt;&lt;br /&gt;
 &amp;lt;/ServerAssignmentAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MultimediaAuth Command ==&lt;br /&gt;
&lt;br /&gt;
=== Request ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;MultimediaAuthRequest appid=&amp;quot;16777216&amp;quot; code=&amp;quot;303&amp;quot; shortName=&amp;quot;MAR&amp;quot; flags=&amp;quot;request,proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost code=&amp;quot;293&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm code=&amp;quot;283&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SipAuthDataItem vendor=&amp;quot;10415&amp;quot; code=&amp;quot;612&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;SipItemNumber vendor=&amp;quot;10415&amp;quot; code=&amp;quot;613&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot; code=&amp;quot;608&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthenticate vendor=&amp;quot;10415&amp;quot; code=&amp;quot;609&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthorization vendor=&amp;quot;10415&amp;quot; code=&amp;quot;610&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthContext vendor=&amp;quot;10415&amp;quot; code=&amp;quot;611&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot; code=&amp;quot;625&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot; code=&amp;quot;626&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipDigestAuthenticate vendor=&amp;quot;10415&amp;quot; code=&amp;quot;635&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;DigestRealm code=&amp;quot;104&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestAlgorithm code=&amp;quot;111&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestQop code=&amp;quot;110&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestHA1 code=&amp;quot;121&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/SipDigestAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIpAddr code=&amp;quot;8&amp;quot; format=&amp;quot;ipv4&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIPv6Prefix code=&amp;quot;97&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIfaceId code=&amp;quot;96&amp;quot; format=&amp;quot;uint64&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;LineIdentifier vendor=&amp;quot;13019&amp;quot; code=&amp;quot;500&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SipAuthDataItem&amp;gt;&lt;br /&gt;
  &amp;lt;SipNumberAuthItems vendor=&amp;quot;10415&amp;quot; code=&amp;quot;607&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/MultimediaAuthRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;MultimediaAuthRequest appid=&amp;quot;16777216&amp;quot; flags=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost&amp;gt;destination.ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm&amp;gt;ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;SipAuthDataItem vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;SipItemNumber vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SipItemNumber&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/SipAuthScheme&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthenticate vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthorization vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthorization&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthContext vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthContext&amp;gt;&lt;br /&gt;
    &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/ConfidentialityKey&amp;gt;&lt;br /&gt;
    &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/IntegrityKey&amp;gt;&lt;br /&gt;
    &amp;lt;SipDigestAuthenticate vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;DigestRealm&amp;gt;utf-8.string&amp;lt;/DigestRealm&amp;gt;&lt;br /&gt;
      &amp;lt;DigestAlgorithm&amp;gt;utf-8.string&amp;lt;/DigestAlgorithm&amp;gt;&lt;br /&gt;
      &amp;lt;DigestQop&amp;gt;utf-8.string&amp;lt;/DigestQop&amp;gt;&lt;br /&gt;
      &amp;lt;DigestHA1&amp;gt;utf-8.string&amp;lt;/DigestHA1&amp;gt;&lt;br /&gt;
    &amp;lt;/SipDigestAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIpAddr&amp;gt;1.2.3.4&amp;lt;/FramedIpAddr&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIPv6Prefix&amp;gt;1122554433aa22&amp;lt;/FramedIPv6Prefix&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIfaceId&amp;gt;0&amp;lt;/FramedIfaceId&amp;gt;&lt;br /&gt;
    &amp;lt;LineIdentifier vendor=&amp;quot;13019&amp;quot;&amp;gt;00554433aa&amp;lt;/LineIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;/SipAuthDataItem&amp;gt;&lt;br /&gt;
  &amp;lt;SipNumberAuthItems vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SipNumberAuthItems&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
 &amp;lt;/MultimediaAuthRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Answer ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;MultimediaAuthAnswer appid=&amp;quot;16777216&amp;quot; code=&amp;quot;303&amp;quot; shortName=&amp;quot;MAA&amp;quot; flags=&amp;quot;proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,need-result,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;ResultCode code=&amp;quot;268&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ExperimentalResult code=&amp;quot;297&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ExperimentalResultCode code=&amp;quot;298&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SipNumberAuthItems vendor=&amp;quot;10415&amp;quot; code=&amp;quot;607&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SipAuthDataItem vendor=&amp;quot;10415&amp;quot; code=&amp;quot;612&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;SipItemNumber vendor=&amp;quot;10415&amp;quot; code=&amp;quot;613&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot; code=&amp;quot;608&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthenticate vendor=&amp;quot;10415&amp;quot; code=&amp;quot;609&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthorization vendor=&amp;quot;10415&amp;quot; code=&amp;quot;610&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthContext vendor=&amp;quot;10415&amp;quot; code=&amp;quot;611&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot; code=&amp;quot;625&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot; code=&amp;quot;626&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipDigestAuthenticate vendor=&amp;quot;10415&amp;quot; code=&amp;quot;635&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;DigestRealm code=&amp;quot;104&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestAlgorithm code=&amp;quot;111&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestQop code=&amp;quot;110&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestHA1 code=&amp;quot;121&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/SipDigestAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIpAddr code=&amp;quot;8&amp;quot; format=&amp;quot;ipv4&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIPv6Prefix code=&amp;quot;97&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIfaceId code=&amp;quot;96&amp;quot; format=&amp;quot;uint64&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;LineIdentifier vendor=&amp;quot;13019&amp;quot; code=&amp;quot;500&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SipAuthDataItem&amp;gt;&lt;br /&gt;
 &amp;lt;/MultimediaAuthAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;MultimediaAuthAnswer appid=&amp;quot;16777216&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_state}&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;SipNumberAuthItems vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SipNumberAuthItems&amp;gt;&lt;br /&gt;
  &amp;lt;SipAuthDataItem vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;SipItemNumber vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SipItemNumber&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/SipAuthScheme&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthenticate vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthorization vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthorization&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthContext vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthContext&amp;gt;&lt;br /&gt;
    &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/ConfidentialityKey&amp;gt;&lt;br /&gt;
    &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/IntegrityKey&amp;gt;&lt;br /&gt;
    &amp;lt;SipDigestAuthenticate vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;DigestRealm&amp;gt;utf-8.string&amp;lt;/DigestRealm&amp;gt;&lt;br /&gt;
      &amp;lt;DigestAlgorithm&amp;gt;utf-8.string&amp;lt;/DigestAlgorithm&amp;gt;&lt;br /&gt;
      &amp;lt;DigestQop&amp;gt;utf-8.string&amp;lt;/DigestQop&amp;gt;&lt;br /&gt;
      &amp;lt;DigestHA1&amp;gt;utf-8.string&amp;lt;/DigestHA1&amp;gt;&lt;br /&gt;
    &amp;lt;/SipDigestAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIpAddr&amp;gt;1.2.3.4&amp;lt;/FramedIpAddr&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIPv6Prefix&amp;gt;1122554433aa22&amp;lt;/FramedIPv6Prefix&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIfaceId&amp;gt;0&amp;lt;/FramedIfaceId&amp;gt;&lt;br /&gt;
    &amp;lt;LineIdentifier vendor=&amp;quot;13019&amp;quot;&amp;gt;00554433aa&amp;lt;/LineIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;/SipAuthDataItem&amp;gt;&lt;br /&gt;
 &amp;lt;/MultimediaAuthAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== RegistrationTermination Command ==&lt;br /&gt;
&lt;br /&gt;
=== Request ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
 &amp;lt;RegistrationTerminationRequest appid=&amp;quot;16777216&amp;quot; code=&amp;quot;304&amp;quot; shortName=&amp;quot;RTR&amp;quot; flags=&amp;quot;request,proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost code=&amp;quot;293&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm code=&amp;quot;283&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedIdentities vendor=&amp;quot;10415&amp;quot; code=&amp;quot;632&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DeregistrationReason vendor=&amp;quot;10415&amp;quot; code=&amp;quot;615&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ReasonCode vendor=&amp;quot;10415&amp;quot; code=&amp;quot;616&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;dictionary&amp;gt;0=permanent 1=new-server-assigned 2=server-change 3=remove-s-cscf&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
    &amp;lt;/ReasonCode&amp;gt;&lt;br /&gt;
    &amp;lt;ReasonInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;617&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/DeregistrationReason&amp;gt;&lt;br /&gt;
 &amp;lt;/RegistrationTerminationRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;RegistrationTerminationRequest appid=&amp;quot;16777216&amp;quot; flags=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost&amp;gt;destination.ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm&amp;gt;ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedIdentities vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;DeregistrationReason vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ReasonCode vendor=&amp;quot;10415&amp;quot;&amp;gt;server-change&amp;lt;/ReasonCode&amp;gt;&lt;br /&gt;
    &amp;lt;ReasonInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ReasonInfo&amp;gt;&lt;br /&gt;
  &amp;lt;/DeregistrationReason&amp;gt;&lt;br /&gt;
 &amp;lt;/RegistrationTerminationRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Answer ===&lt;br /&gt;
&lt;br /&gt;
General schema: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;RegistrationTerminationAnswer appid=&amp;quot;16777216&amp;quot; code=&amp;quot;304&amp;quot; shortName=&amp;quot;RTA&amp;quot; flags=&amp;quot;proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,need-result,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;ResultCode code=&amp;quot;268&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ExperimentalResult code=&amp;quot;297&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ExperimentalResultCode code=&amp;quot;298&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedIdentities vendor=&amp;quot;10415&amp;quot; code=&amp;quot;632&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;IdentityWithEmergencyReg vendor=&amp;quot;10415&amp;quot; code=&amp;quot;651&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/IdentityWithEmergencyReg&amp;gt;&lt;br /&gt;
 &amp;lt;/RegistrationTerminationAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;RegistrationTerminationAnswer appid=&amp;quot;16777216&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_state}&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedIdentities vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;IdentityWithEmergencyReg vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
    &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;/IdentityWithEmergencyReg&amp;gt;&lt;br /&gt;
 &amp;lt;/RegistrationTerminationAnswer&amp;gt;&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/Cx/Dx</id>
		<title>Cx/Dx</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/Cx/Dx"/>
				<updated>2022-03-10T14:11:55Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: /* Answer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
&lt;br /&gt;
This page shows as examples Diameter XMLs for the Cx/Dx interface&amp;lt;br&amp;gt;&lt;br /&gt;
Application id: 16777216&amp;lt;br&amp;gt;&lt;br /&gt;
Vendor id: 10415&lt;br /&gt;
&lt;br /&gt;
'''NOTES:''':&lt;br /&gt;
* The examples below are not consistent with CSCF/HSS functionality. Their parameters are present here to be seen.&lt;br /&gt;
* In the following examples a ''${str}'' means its value must be reflected from received message. E.g. ''${hhident}'' must be set from received message ''hhident'' parameter.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UserAuthorization Command ==&lt;br /&gt;
&lt;br /&gt;
=== Request ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;UserAuthorizationRequest appid=&amp;quot;16777216&amp;quot; code=&amp;quot;300&amp;quot; shortName=&amp;quot;UAR&amp;quot; flags=&amp;quot;request,proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost code=&amp;quot;293&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm code=&amp;quot;283&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VisitedNetworkIdentifier vendor=&amp;quot;10415&amp;quot; code=&amp;quot;600&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;UserAuthzType vendor=&amp;quot;10415&amp;quot; code=&amp;quot;623&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=register 1=unregister 2=register-and-caps&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/UserAuthzType&amp;gt;&lt;br /&gt;
  &amp;lt;UARFlags vendor=&amp;quot;10415&amp;quot; code=&amp;quot;637&amp;quot; format=&amp;quot;flags32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;0=emergency-register&amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
  &amp;lt;/UARFlags&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;UserAuthorizationRequest appid=&amp;quot;16777216&amp;quot; flags=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost&amp;gt;destination.ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm&amp;gt;ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;VisitedNetworkIdentifier vendor=&amp;quot;10415&amp;quot;&amp;gt;6578616d706c652e636f6d&amp;lt;/VisitedNetworkIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;UserAuthzType vendor=&amp;quot;10415&amp;quot;&amp;gt;register&amp;lt;/UserAuthzType&amp;gt;&lt;br /&gt;
  &amp;lt;UARFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;emergency-register&amp;lt;/UARFlags&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Answer ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;UserAuthorizationAnswer appid=&amp;quot;16777216&amp;quot; code=&amp;quot;300&amp;quot; shortName=&amp;quot;UAA&amp;quot; flags=&amp;quot;proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,need-result,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;ResultCode code=&amp;quot;268&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ExperimentalResult code=&amp;quot;297&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ExperimentalResultCode code=&amp;quot;298&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ServerCaps vendor=&amp;quot;10415&amp;quot; code=&amp;quot;603&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;MandatoryCaps vendor=&amp;quot;10415&amp;quot; code=&amp;quot;604&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;OptionalCaps vendor=&amp;quot;10415&amp;quot; code=&amp;quot;605&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ServerCaps&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;UserAuthorizationAnswer appid=&amp;quot;16777216&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_state}&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;ServerCaps vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;MandatoryCaps vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/MandatoryCaps&amp;gt;&lt;br /&gt;
    &amp;lt;OptionalCaps vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/OptionalCaps&amp;gt;&lt;br /&gt;
    &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;/ServerCaps&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ServerAssignment Command ==&lt;br /&gt;
&lt;br /&gt;
=== Request ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ServerAssignmentRequest appid=&amp;quot;16777216&amp;quot; code=&amp;quot;301&amp;quot; shortName=&amp;quot;SAR&amp;quot; flags=&amp;quot;request,proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost code=&amp;quot;293&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm code=&amp;quot;283&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;WildcardedPublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;634&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ServerAssignType vendor=&amp;quot;10415&amp;quot; code=&amp;quot;614&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=none 1=register 2=re-register 3=unregistered-user 4=timeout-unregister 5=unregistered 6=timeout-unregister-store-server 7=unregistered-store-server 8=admin-unregister 9=noauth 10=auth-timeout 11=unregister-too-much-data 12=aaa-user-data-request 13=pgw-update 14=restoration&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/ServerAssignType&amp;gt;&lt;br /&gt;
  &amp;lt;UserDataAlreadyAvailable vendor=&amp;quot;10415&amp;quot; code=&amp;quot;624&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=no 1=yes&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/UserDataAlreadyAvailable&amp;gt;&lt;br /&gt;
  &amp;lt;ScscfRestorationInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;639&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;RestorationInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;649&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Path vendor=&amp;quot;10415&amp;quot; code=&amp;quot;640&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;Contact vendor=&amp;quot;10415&amp;quot; code=&amp;quot;641&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;SubscriptionInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;642&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CallIdSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;643&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;FromSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;644&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;ToSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;645&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;RecordRoute vendor=&amp;quot;10415&amp;quot; code=&amp;quot;646&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Contact vendor=&amp;quot;10415&amp;quot; code=&amp;quot;641&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/SubscriptionInfo&amp;gt;&lt;br /&gt;
    &amp;lt;/RestorationInfo&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot; code=&amp;quot;608&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ScscfRestorationInfo&amp;gt;&lt;br /&gt;
  &amp;lt;MultipleReg vendor=&amp;quot;10415&amp;quot; code=&amp;quot;648&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=no 1=yes&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/MultipleReg&amp;gt;&lt;br /&gt;
  &amp;lt;SessionPriority vendor=&amp;quot;10415&amp;quot; code=&amp;quot;650&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/ServerAssignmentRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;ServerAssignmentRequest appid=&amp;quot;16777216&amp;quot; flags=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost&amp;gt;destination.ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm&amp;gt;ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;WildcardedPublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/WildcardedPublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;ServerAssignType vendor=&amp;quot;10415&amp;quot;&amp;gt;register&amp;lt;/ServerAssignType&amp;gt;&lt;br /&gt;
  &amp;lt;UserDataAlreadyAvailable vendor=&amp;quot;10415&amp;quot;&amp;gt;true&amp;lt;/UserDataAlreadyAvailable&amp;gt;&lt;br /&gt;
  &amp;lt;ScscfRestorationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
    &amp;lt;RestorationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Path vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Path&amp;gt;&lt;br /&gt;
      &amp;lt;Contact vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Contact&amp;gt;&lt;br /&gt;
      &amp;lt;SubscriptionInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CallIdSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/CallIdSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;FromSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/FromSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;ToSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/ToSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;RecordRoute vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/RecordRoute&amp;gt;&lt;br /&gt;
        &amp;lt;Contact vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Contact&amp;gt;&lt;br /&gt;
      &amp;lt;/SubscriptionInfo&amp;gt;&lt;br /&gt;
    &amp;lt;/RestorationInfo&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/SipAuthScheme&amp;gt;&lt;br /&gt;
  &amp;lt;/ScscfRestorationInfo&amp;gt;&lt;br /&gt;
  &amp;lt;MultipleReg vendor=&amp;quot;10415&amp;quot;&amp;gt;false&amp;lt;/MultipleReg&amp;gt;&lt;br /&gt;
  &amp;lt;SessionPriority vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SessionPriority&amp;gt;&lt;br /&gt;
 &amp;lt;/ServerAssignmentRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Answer ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ServerAssignmentAnswer appid=&amp;quot;16777216&amp;quot; code=&amp;quot;301&amp;quot; shortName=&amp;quot;SAA&amp;quot; flags=&amp;quot;proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,need-result,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;ResultCode code=&amp;quot;268&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ExperimentalResult code=&amp;quot;297&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ExperimentalResultCode code=&amp;quot;298&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;UserData vendor=&amp;quot;10415&amp;quot; code=&amp;quot;606&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ChargingInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;618&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryEventChargingFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;619&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryEventChargingFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;620&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;621&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;622&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ChargingInfo&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedIdentities vendor=&amp;quot;10415&amp;quot; code=&amp;quot;632&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;LooseRoute vendor=&amp;quot;10415&amp;quot; code=&amp;quot;638&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=no 1=yes&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/LooseRoute&amp;gt;&lt;br /&gt;
  &amp;lt;ScscfRestorationInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;639&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;RestorationInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;649&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Path vendor=&amp;quot;10415&amp;quot; code=&amp;quot;640&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;Contact vendor=&amp;quot;10415&amp;quot; code=&amp;quot;641&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;SubscriptionInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;642&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CallIdSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;643&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;FromSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;644&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;ToSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;645&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;RecordRoute vendor=&amp;quot;10415&amp;quot; code=&amp;quot;646&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Contact vendor=&amp;quot;10415&amp;quot; code=&amp;quot;641&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/SubscriptionInfo&amp;gt;&lt;br /&gt;
    &amp;lt;/RestorationInfo&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot; code=&amp;quot;608&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ScscfRestorationInfo&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedRegisteredIdentities vendor=&amp;quot;10415&amp;quot; code=&amp;quot;647&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedRegisteredIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;WildcardedPublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;634&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;PriviledgedSender vendor=&amp;quot;10415&amp;quot; code=&amp;quot;652&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=no 1=yes&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/PriviledgedSender&amp;gt;&lt;br /&gt;
 &amp;lt;/ServerAssignmentAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;ServerAssignmentAnswer appid=&amp;quot;16777216&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_state}&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;UserData vendor=&amp;quot;10415&amp;quot;&amp;gt;&amp;lt;IMSSubscription/&amp;gt;&amp;lt;/UserData&amp;gt;&lt;br /&gt;
  &amp;lt;ChargingInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryEventChargingFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/PrimaryEventChargingFN&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryEventChargingFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/SecondaryEventChargingFN&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/PrimaryChargingCollectionFN&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/SecondaryChargingCollectionFN&amp;gt;&lt;br /&gt;
  &amp;lt;/ChargingInfo&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedIdentities vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;LooseRoute vendor=&amp;quot;10415&amp;quot;&amp;gt;true&amp;lt;/LooseRoute&amp;gt;&lt;br /&gt;
  &amp;lt;ScscfRestorationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
    &amp;lt;RestorationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Path vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Path&amp;gt;&lt;br /&gt;
      &amp;lt;Contact vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Contact&amp;gt;&lt;br /&gt;
      &amp;lt;SubscriptionInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CallIdSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/CallIdSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;FromSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/FromSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;ToSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/ToSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;RecordRoute vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/RecordRoute&amp;gt;&lt;br /&gt;
        &amp;lt;Contact vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Contact&amp;gt;&lt;br /&gt;
      &amp;lt;/SubscriptionInfo&amp;gt;&lt;br /&gt;
    &amp;lt;/RestorationInfo&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/SipAuthScheme&amp;gt;&lt;br /&gt;
  &amp;lt;/ScscfRestorationInfo&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedRegisteredIdentities vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedRegisteredIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;WildcardedPublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/WildcardedPublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;PriviledgedSender vendor=&amp;quot;10415&amp;quot;&amp;gt;true&amp;lt;/PriviledgedSender&amp;gt;&lt;br /&gt;
 &amp;lt;/ServerAssignmentAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MultimediaAuth Command ==&lt;br /&gt;
&lt;br /&gt;
=== Request ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;MultimediaAuthRequest appid=&amp;quot;16777216&amp;quot; code=&amp;quot;303&amp;quot; shortName=&amp;quot;MAR&amp;quot; flags=&amp;quot;request,proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost code=&amp;quot;293&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm code=&amp;quot;283&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SipAuthDataItem vendor=&amp;quot;10415&amp;quot; code=&amp;quot;612&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;SipItemNumber vendor=&amp;quot;10415&amp;quot; code=&amp;quot;613&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot; code=&amp;quot;608&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthenticate vendor=&amp;quot;10415&amp;quot; code=&amp;quot;609&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthorization vendor=&amp;quot;10415&amp;quot; code=&amp;quot;610&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthContext vendor=&amp;quot;10415&amp;quot; code=&amp;quot;611&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot; code=&amp;quot;625&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot; code=&amp;quot;626&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipDigestAuthenticate vendor=&amp;quot;10415&amp;quot; code=&amp;quot;635&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;DigestRealm code=&amp;quot;104&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestAlgorithm code=&amp;quot;111&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestQop code=&amp;quot;110&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestHA1 code=&amp;quot;121&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/SipDigestAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIpAddr code=&amp;quot;8&amp;quot; format=&amp;quot;ipv4&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIPv6Prefix code=&amp;quot;97&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIfaceId code=&amp;quot;96&amp;quot; format=&amp;quot;uint64&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;LineIdentifier vendor=&amp;quot;13019&amp;quot; code=&amp;quot;500&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SipAuthDataItem&amp;gt;&lt;br /&gt;
  &amp;lt;SipNumberAuthItems vendor=&amp;quot;10415&amp;quot; code=&amp;quot;607&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/MultimediaAuthRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;MultimediaAuthRequest appid=&amp;quot;16777216&amp;quot; flags=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost&amp;gt;destination.ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm&amp;gt;ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;SipAuthDataItem vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;SipItemNumber vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SipItemNumber&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/SipAuthScheme&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthenticate vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthorization vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthorization&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthContext vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthContext&amp;gt;&lt;br /&gt;
    &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/ConfidentialityKey&amp;gt;&lt;br /&gt;
    &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/IntegrityKey&amp;gt;&lt;br /&gt;
    &amp;lt;SipDigestAuthenticate vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;DigestRealm&amp;gt;utf-8.string&amp;lt;/DigestRealm&amp;gt;&lt;br /&gt;
      &amp;lt;DigestAlgorithm&amp;gt;utf-8.string&amp;lt;/DigestAlgorithm&amp;gt;&lt;br /&gt;
      &amp;lt;DigestQop&amp;gt;utf-8.string&amp;lt;/DigestQop&amp;gt;&lt;br /&gt;
      &amp;lt;DigestHA1&amp;gt;utf-8.string&amp;lt;/DigestHA1&amp;gt;&lt;br /&gt;
    &amp;lt;/SipDigestAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIpAddr&amp;gt;1.2.3.4&amp;lt;/FramedIpAddr&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIPv6Prefix&amp;gt;1122554433aa22&amp;lt;/FramedIPv6Prefix&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIfaceId&amp;gt;0&amp;lt;/FramedIfaceId&amp;gt;&lt;br /&gt;
    &amp;lt;LineIdentifier vendor=&amp;quot;13019&amp;quot;&amp;gt;00554433aa&amp;lt;/LineIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;/SipAuthDataItem&amp;gt;&lt;br /&gt;
  &amp;lt;SipNumberAuthItems vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SipNumberAuthItems&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
 &amp;lt;/MultimediaAuthRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Answer ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;MultimediaAuthAnswer appid=&amp;quot;16777216&amp;quot; code=&amp;quot;303&amp;quot; shortName=&amp;quot;MAA&amp;quot; flags=&amp;quot;proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,need-result,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;ResultCode code=&amp;quot;268&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ExperimentalResult code=&amp;quot;297&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ExperimentalResultCode code=&amp;quot;298&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SipNumberAuthItems vendor=&amp;quot;10415&amp;quot; code=&amp;quot;607&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SipAuthDataItem vendor=&amp;quot;10415&amp;quot; code=&amp;quot;612&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;SipItemNumber vendor=&amp;quot;10415&amp;quot; code=&amp;quot;613&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot; code=&amp;quot;608&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthenticate vendor=&amp;quot;10415&amp;quot; code=&amp;quot;609&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthorization vendor=&amp;quot;10415&amp;quot; code=&amp;quot;610&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthContext vendor=&amp;quot;10415&amp;quot; code=&amp;quot;611&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot; code=&amp;quot;625&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot; code=&amp;quot;626&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SipDigestAuthenticate vendor=&amp;quot;10415&amp;quot; code=&amp;quot;635&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;DigestRealm code=&amp;quot;104&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestAlgorithm code=&amp;quot;111&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestQop code=&amp;quot;110&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;DigestHA1 code=&amp;quot;121&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/SipDigestAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIpAddr code=&amp;quot;8&amp;quot; format=&amp;quot;ipv4&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIPv6Prefix code=&amp;quot;97&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIfaceId code=&amp;quot;96&amp;quot; format=&amp;quot;uint64&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;LineIdentifier vendor=&amp;quot;13019&amp;quot; code=&amp;quot;500&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SipAuthDataItem&amp;gt;&lt;br /&gt;
 &amp;lt;/MultimediaAuthAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;MultimediaAuthAnswer appid=&amp;quot;16777216&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_state}&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;SipNumberAuthItems vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SipNumberAuthItems&amp;gt;&lt;br /&gt;
  &amp;lt;SipAuthDataItem vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;SipItemNumber vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SipItemNumber&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/SipAuthScheme&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthenticate vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthorization vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthorization&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthContext vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/SipAuthContext&amp;gt;&lt;br /&gt;
    &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/ConfidentialityKey&amp;gt;&lt;br /&gt;
    &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/IntegrityKey&amp;gt;&lt;br /&gt;
    &amp;lt;SipDigestAuthenticate vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;DigestRealm&amp;gt;utf-8.string&amp;lt;/DigestRealm&amp;gt;&lt;br /&gt;
      &amp;lt;DigestAlgorithm&amp;gt;utf-8.string&amp;lt;/DigestAlgorithm&amp;gt;&lt;br /&gt;
      &amp;lt;DigestQop&amp;gt;utf-8.string&amp;lt;/DigestQop&amp;gt;&lt;br /&gt;
      &amp;lt;DigestHA1&amp;gt;utf-8.string&amp;lt;/DigestHA1&amp;gt;&lt;br /&gt;
    &amp;lt;/SipDigestAuthenticate&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIpAddr&amp;gt;1.2.3.4&amp;lt;/FramedIpAddr&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIPv6Prefix&amp;gt;1122554433aa22&amp;lt;/FramedIPv6Prefix&amp;gt;&lt;br /&gt;
    &amp;lt;FramedIfaceId&amp;gt;0&amp;lt;/FramedIfaceId&amp;gt;&lt;br /&gt;
    &amp;lt;LineIdentifier vendor=&amp;quot;13019&amp;quot;&amp;gt;00554433aa&amp;lt;/LineIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;/SipAuthDataItem&amp;gt;&lt;br /&gt;
 &amp;lt;/MultimediaAuthAnswer&amp;gt;&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/Cx/Dx</id>
		<title>Cx/Dx</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/Cx/Dx"/>
				<updated>2022-03-10T14:06:19Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: /* UserAuthorization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
&lt;br /&gt;
This page shows as examples Diameter XMLs for the Cx/Dx interface&amp;lt;br&amp;gt;&lt;br /&gt;
Application id: 16777216&amp;lt;br&amp;gt;&lt;br /&gt;
Vendor id: 10415&lt;br /&gt;
&lt;br /&gt;
'''NOTES:''':&lt;br /&gt;
* The examples below are not consistent with CSCF/HSS functionality. Their parameters are present here to be seen.&lt;br /&gt;
* In the following examples a ''${str}'' means its value must be reflected from received message. E.g. ''${hhident}'' must be set from received message ''hhident'' parameter.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UserAuthorization Command ==&lt;br /&gt;
&lt;br /&gt;
=== Request ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;UserAuthorizationRequest appid=&amp;quot;16777216&amp;quot; code=&amp;quot;300&amp;quot; shortName=&amp;quot;UAR&amp;quot; flags=&amp;quot;request,proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost code=&amp;quot;293&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm code=&amp;quot;283&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VisitedNetworkIdentifier vendor=&amp;quot;10415&amp;quot; code=&amp;quot;600&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;UserAuthzType vendor=&amp;quot;10415&amp;quot; code=&amp;quot;623&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=register 1=unregister 2=register-and-caps&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/UserAuthzType&amp;gt;&lt;br /&gt;
  &amp;lt;UARFlags vendor=&amp;quot;10415&amp;quot; code=&amp;quot;637&amp;quot; format=&amp;quot;flags32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;0=emergency-register&amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
  &amp;lt;/UARFlags&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;UserAuthorizationRequest appid=&amp;quot;16777216&amp;quot; flags=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost&amp;gt;destination.ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm&amp;gt;ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;VisitedNetworkIdentifier vendor=&amp;quot;10415&amp;quot;&amp;gt;6578616d706c652e636f6d&amp;lt;/VisitedNetworkIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;UserAuthzType vendor=&amp;quot;10415&amp;quot;&amp;gt;register&amp;lt;/UserAuthzType&amp;gt;&lt;br /&gt;
  &amp;lt;UARFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;emergency-register&amp;lt;/UARFlags&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Answer ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;UserAuthorizationAnswer appid=&amp;quot;16777216&amp;quot; code=&amp;quot;300&amp;quot; shortName=&amp;quot;UAA&amp;quot; flags=&amp;quot;proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,need-result,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;ResultCode code=&amp;quot;268&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ExperimentalResult code=&amp;quot;297&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ExperimentalResultCode code=&amp;quot;298&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ServerCaps vendor=&amp;quot;10415&amp;quot; code=&amp;quot;603&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;MandatoryCaps vendor=&amp;quot;10415&amp;quot; code=&amp;quot;604&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;OptionalCaps vendor=&amp;quot;10415&amp;quot; code=&amp;quot;605&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ServerCaps&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;UserAuthorizationAnswer appid=&amp;quot;16777216&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_state}&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;ServerCaps vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;MandatoryCaps vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/MandatoryCaps&amp;gt;&lt;br /&gt;
    &amp;lt;OptionalCaps vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/OptionalCaps&amp;gt;&lt;br /&gt;
    &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;/ServerCaps&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ServerAssignment Command ==&lt;br /&gt;
&lt;br /&gt;
=== Request ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ServerAssignmentRequest appid=&amp;quot;16777216&amp;quot; code=&amp;quot;301&amp;quot; shortName=&amp;quot;SAR&amp;quot; flags=&amp;quot;request,proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost code=&amp;quot;293&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm code=&amp;quot;283&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;WildcardedPublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;634&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ServerAssignType vendor=&amp;quot;10415&amp;quot; code=&amp;quot;614&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=none 1=register 2=re-register 3=unregistered-user 4=timeout-unregister 5=unregistered 6=timeout-unregister-store-server 7=unregistered-store-server 8=admin-unregister 9=noauth 10=auth-timeout 11=unregister-too-much-data 12=aaa-user-data-request 13=pgw-update 14=restoration&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/ServerAssignType&amp;gt;&lt;br /&gt;
  &amp;lt;UserDataAlreadyAvailable vendor=&amp;quot;10415&amp;quot; code=&amp;quot;624&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=no 1=yes&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/UserDataAlreadyAvailable&amp;gt;&lt;br /&gt;
  &amp;lt;ScscfRestorationInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;639&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;RestorationInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;649&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Path vendor=&amp;quot;10415&amp;quot; code=&amp;quot;640&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;Contact vendor=&amp;quot;10415&amp;quot; code=&amp;quot;641&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;SubscriptionInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;642&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CallIdSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;643&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;FromSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;644&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;ToSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;645&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;RecordRoute vendor=&amp;quot;10415&amp;quot; code=&amp;quot;646&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Contact vendor=&amp;quot;10415&amp;quot; code=&amp;quot;641&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/SubscriptionInfo&amp;gt;&lt;br /&gt;
    &amp;lt;/RestorationInfo&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot; code=&amp;quot;608&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ScscfRestorationInfo&amp;gt;&lt;br /&gt;
  &amp;lt;MultipleReg vendor=&amp;quot;10415&amp;quot; code=&amp;quot;648&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=no 1=yes&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/MultipleReg&amp;gt;&lt;br /&gt;
  &amp;lt;SessionPriority vendor=&amp;quot;10415&amp;quot; code=&amp;quot;650&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/ServerAssignmentRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;ServerAssignmentRequest appid=&amp;quot;16777216&amp;quot; flags=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost&amp;gt;destination.ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm&amp;gt;ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;WildcardedPublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/WildcardedPublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;ServerAssignType vendor=&amp;quot;10415&amp;quot;&amp;gt;register&amp;lt;/ServerAssignType&amp;gt;&lt;br /&gt;
  &amp;lt;UserDataAlreadyAvailable vendor=&amp;quot;10415&amp;quot;&amp;gt;true&amp;lt;/UserDataAlreadyAvailable&amp;gt;&lt;br /&gt;
  &amp;lt;ScscfRestorationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
    &amp;lt;RestorationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Path vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Path&amp;gt;&lt;br /&gt;
      &amp;lt;Contact vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Contact&amp;gt;&lt;br /&gt;
      &amp;lt;SubscriptionInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CallIdSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/CallIdSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;FromSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/FromSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;ToSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/ToSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;RecordRoute vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/RecordRoute&amp;gt;&lt;br /&gt;
        &amp;lt;Contact vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Contact&amp;gt;&lt;br /&gt;
      &amp;lt;/SubscriptionInfo&amp;gt;&lt;br /&gt;
    &amp;lt;/RestorationInfo&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/SipAuthScheme&amp;gt;&lt;br /&gt;
  &amp;lt;/ScscfRestorationInfo&amp;gt;&lt;br /&gt;
  &amp;lt;MultipleReg vendor=&amp;quot;10415&amp;quot;&amp;gt;false&amp;lt;/MultipleReg&amp;gt;&lt;br /&gt;
  &amp;lt;SessionPriority vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/SessionPriority&amp;gt;&lt;br /&gt;
 &amp;lt;/ServerAssignmentRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Answer ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ServerAssignmentAnswer appid=&amp;quot;16777216&amp;quot; code=&amp;quot;301&amp;quot; shortName=&amp;quot;SAA&amp;quot; flags=&amp;quot;proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,need-result,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;ResultCode code=&amp;quot;268&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ExperimentalResult code=&amp;quot;297&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ExperimentalResultCode code=&amp;quot;298&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;UserData vendor=&amp;quot;10415&amp;quot; code=&amp;quot;606&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ChargingInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;618&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryEventChargingFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;619&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryEventChargingFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;620&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;621&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot; code=&amp;quot;622&amp;quot; format=&amp;quot;diamuri&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ChargingInfo&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedIdentities vendor=&amp;quot;10415&amp;quot; code=&amp;quot;632&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;LooseRoute vendor=&amp;quot;10415&amp;quot; code=&amp;quot;638&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=no 1=yes&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/LooseRoute&amp;gt;&lt;br /&gt;
  &amp;lt;ScscfRestorationInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;639&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;RestorationInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;649&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Path vendor=&amp;quot;10415&amp;quot; code=&amp;quot;640&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;Contact vendor=&amp;quot;10415&amp;quot; code=&amp;quot;641&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;SubscriptionInfo vendor=&amp;quot;10415&amp;quot; code=&amp;quot;642&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CallIdSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;643&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;FromSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;644&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;ToSipHdr vendor=&amp;quot;10415&amp;quot; code=&amp;quot;645&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;RecordRoute vendor=&amp;quot;10415&amp;quot; code=&amp;quot;646&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;Contact vendor=&amp;quot;10415&amp;quot; code=&amp;quot;641&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/SubscriptionInfo&amp;gt;&lt;br /&gt;
    &amp;lt;/RestorationInfo&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot; code=&amp;quot;608&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ScscfRestorationInfo&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedRegisteredIdentities vendor=&amp;quot;10415&amp;quot; code=&amp;quot;647&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedRegisteredIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;WildcardedPublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;634&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;PriviledgedSender vendor=&amp;quot;10415&amp;quot; code=&amp;quot;652&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=no 1=yes&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/PriviledgedSender&amp;gt;&lt;br /&gt;
 &amp;lt;/ServerAssignmentAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;ServerAssignmentAnswer appid=&amp;quot;16777216&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_state}&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;UserData vendor=&amp;quot;10415&amp;quot;&amp;gt;&amp;lt;IMSSubscription/&amp;gt;&amp;lt;/UserData&amp;gt;&lt;br /&gt;
  &amp;lt;ChargingInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryEventChargingFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/PrimaryEventChargingFN&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryEventChargingFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/SecondaryEventChargingFN&amp;gt;&lt;br /&gt;
    &amp;lt;PrimaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/PrimaryChargingCollectionFN&amp;gt;&lt;br /&gt;
    &amp;lt;SecondaryChargingCollectionFN vendor=&amp;quot;10415&amp;quot;&amp;gt;aaa://host.example.com;transport=tcp&amp;lt;/SecondaryChargingCollectionFN&amp;gt;&lt;br /&gt;
  &amp;lt;/ChargingInfo&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedIdentities vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;LooseRoute vendor=&amp;quot;10415&amp;quot;&amp;gt;true&amp;lt;/LooseRoute&amp;gt;&lt;br /&gt;
  &amp;lt;ScscfRestorationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
    &amp;lt;RestorationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Path vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Path&amp;gt;&lt;br /&gt;
      &amp;lt;Contact vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Contact&amp;gt;&lt;br /&gt;
      &amp;lt;SubscriptionInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;CallIdSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/CallIdSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;FromSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/FromSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;ToSipHdr vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/ToSipHdr&amp;gt;&lt;br /&gt;
        &amp;lt;RecordRoute vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/RecordRoute&amp;gt;&lt;br /&gt;
        &amp;lt;Contact vendor=&amp;quot;10415&amp;quot;&amp;gt;00554433aa&amp;lt;/Contact&amp;gt;&lt;br /&gt;
      &amp;lt;/SubscriptionInfo&amp;gt;&lt;br /&gt;
    &amp;lt;/RestorationInfo&amp;gt;&lt;br /&gt;
    &amp;lt;SipAuthScheme vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/SipAuthScheme&amp;gt;&lt;br /&gt;
  &amp;lt;/ScscfRestorationInfo&amp;gt;&lt;br /&gt;
  &amp;lt;AssociatedRegisteredIdentities vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;/AssociatedRegisteredIdentities&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;WildcardedPublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/WildcardedPublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;PriviledgedSender vendor=&amp;quot;10415&amp;quot;&amp;gt;true&amp;lt;/PriviledgedSender&amp;gt;&lt;br /&gt;
 &amp;lt;/ServerAssignmentAnswer&amp;gt;&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/Cx/Dx</id>
		<title>Cx/Dx</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/Cx/Dx"/>
				<updated>2022-03-10T13:57:45Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: /* UserAuthorization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
&lt;br /&gt;
This page shows as examples Diameter XMLs for the Cx/Dx interface&amp;lt;br&amp;gt;&lt;br /&gt;
Application id: 16777216&amp;lt;br&amp;gt;&lt;br /&gt;
Vendor id: 10415&lt;br /&gt;
&lt;br /&gt;
'''NOTES:''':&lt;br /&gt;
* The examples below are not consistent with CSCF/HSS functionality. Their parameters are present here to be seen.&lt;br /&gt;
* In the following examples a ''${str}'' means its value must be reflected from received message. E.g. ''${hhident}'' must be set from received message ''hhident'' parameter.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UserAuthorization ==&lt;br /&gt;
&lt;br /&gt;
=== Request ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;UserAuthorizationRequest appid=&amp;quot;16777216&amp;quot; code=&amp;quot;300&amp;quot; shortName=&amp;quot;UAR&amp;quot; flags=&amp;quot;request,proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost code=&amp;quot;293&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm code=&amp;quot;283&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VisitedNetworkIdentifier vendor=&amp;quot;10415&amp;quot; code=&amp;quot;600&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;UserAuthzType vendor=&amp;quot;10415&amp;quot; code=&amp;quot;623&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=register 1=unregister 2=register-and-caps&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/UserAuthzType&amp;gt;&lt;br /&gt;
  &amp;lt;UARFlags vendor=&amp;quot;10415&amp;quot; code=&amp;quot;637&amp;quot; format=&amp;quot;flags32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;0=emergency-register&amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
  &amp;lt;/UARFlags&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;UserAuthorizationRequest appid=&amp;quot;16777216&amp;quot; flags=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost&amp;gt;destination.ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm&amp;gt;ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;VisitedNetworkIdentifier vendor=&amp;quot;10415&amp;quot;&amp;gt;6578616d706c652e636f6d&amp;lt;/VisitedNetworkIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;UserAuthzType vendor=&amp;quot;10415&amp;quot;&amp;gt;register&amp;lt;/UserAuthzType&amp;gt;&lt;br /&gt;
  &amp;lt;UARFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;emergency-register&amp;lt;/UARFlags&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Answer ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;UserAuthorizationAnswer appid=&amp;quot;16777216&amp;quot; code=&amp;quot;300&amp;quot; shortName=&amp;quot;UAA&amp;quot; flags=&amp;quot;proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,need-result,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;ResultCode code=&amp;quot;268&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ExperimentalResult code=&amp;quot;297&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ExperimentalResultCode code=&amp;quot;298&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;ServerCaps vendor=&amp;quot;10415&amp;quot; code=&amp;quot;603&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;MandatoryCaps vendor=&amp;quot;10415&amp;quot; code=&amp;quot;604&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;OptionalCaps vendor=&amp;quot;10415&amp;quot; code=&amp;quot;605&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot; code=&amp;quot;602&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/ServerCaps&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 &amp;lt;UserAuthorizationAnswer appid=&amp;quot;16777216&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState flags=&amp;quot;mandatory&amp;quot;&amp;gt;${session_state}&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;ServerCaps vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;MandatoryCaps vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/MandatoryCaps&amp;gt;&lt;br /&gt;
    &amp;lt;OptionalCaps vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/OptionalCaps&amp;gt;&lt;br /&gt;
    &amp;lt;ServerName vendor=&amp;quot;10415&amp;quot;&amp;gt;utf-8.string&amp;lt;/ServerName&amp;gt;&lt;br /&gt;
  &amp;lt;/ServerCaps&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationAnswer&amp;gt;&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/Cx/Dx</id>
		<title>Cx/Dx</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/Cx/Dx"/>
				<updated>2022-03-10T13:54:48Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
&lt;br /&gt;
This page shows as examples Diameter XMLs for the Cx/Dx interface&amp;lt;br&amp;gt;&lt;br /&gt;
Application id: 16777216&amp;lt;br&amp;gt;&lt;br /&gt;
Vendor id: 10415&lt;br /&gt;
&lt;br /&gt;
'''NOTES:''':&lt;br /&gt;
* The examples below are not consistent with CSCF/HSS functionality. Their parameters are present here to be seen.&lt;br /&gt;
* In the following examples a ''${str}'' means its value must be reflected from received message. E.g. ''${hhident}'' must be set from received message ''hhident'' parameter.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UserAuthorization ==&lt;br /&gt;
&lt;br /&gt;
=== Request ===&lt;br /&gt;
&lt;br /&gt;
General schema:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;UserAuthorizationRequest appid=&amp;quot;16777216&amp;quot; code=&amp;quot;300&amp;quot; shortName=&amp;quot;UAR&amp;quot; flags=&amp;quot;request,proxiable&amp;quot; internal_flags=&amp;quot;add-session-id,no-session-state,auth-app&amp;quot; vendor=&amp;quot;10415&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SessionId code=&amp;quot;263&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;fixed,required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VendorSpecificApplicationId code=&amp;quot;260&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot; have_unk_avps=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AcctApplicationId code=&amp;quot;259&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;AuthApplicationId code=&amp;quot;258&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
  &amp;lt;AuthSessionState code=&amp;quot;277&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginHost code=&amp;quot;264&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;OriginRealm code=&amp;quot;296&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost code=&amp;quot;293&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm code=&amp;quot;283&amp;quot; format=&amp;quot;diamident&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;Username code=&amp;quot;1&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot; code=&amp;quot;628&amp;quot; format=&amp;quot;grouped&amp;quot; flags_must=&amp;quot;vendor&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;4294967295&amp;quot; have_unk_avps=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;&lt;br /&gt;
      &amp;lt;list_id_1&amp;gt;0=sifc 1=alias 2=ims-restoration&amp;lt;/list_id_1&amp;gt;&lt;br /&gt;
    &amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
    &amp;lt;VendorId code=&amp;quot;266&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;mandatory&amp;quot; flags_must_not=&amp;quot;vendor&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureListId vendor=&amp;quot;10415&amp;quot; code=&amp;quot;629&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;FeatureList vendor=&amp;quot;10415&amp;quot; code=&amp;quot;630&amp;quot; format=&amp;quot;uint32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot; code=&amp;quot;601&amp;quot; format=&amp;quot;str&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;VisitedNetworkIdentifier vendor=&amp;quot;10415&amp;quot; code=&amp;quot;600&amp;quot; format=&amp;quot;raw&amp;quot; flags_must=&amp;quot;vendor,mandatory&amp;quot; occurence=&amp;quot;required&amp;quot; minOccurs=&amp;quot;1&amp;quot; maxOccurs=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;UserAuthzType vendor=&amp;quot;10415&amp;quot; code=&amp;quot;623&amp;quot; format=&amp;quot;enum&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary&amp;gt;0=register 1=unregister 2=register-and-caps&amp;lt;/dictionary&amp;gt;&lt;br /&gt;
  &amp;lt;/UserAuthzType&amp;gt;&lt;br /&gt;
  &amp;lt;UARFlags vendor=&amp;quot;10415&amp;quot; code=&amp;quot;637&amp;quot; format=&amp;quot;flags32&amp;quot; flags_must=&amp;quot;vendor&amp;quot; flags_must_not=&amp;quot;mandatory&amp;quot; minOccurs=&amp;quot;0&amp;quot; maxOccurs=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;dictionary_bits&amp;gt;0=emergency-register&amp;lt;/dictionary_bits&amp;gt;&lt;br /&gt;
  &amp;lt;/UARFlags&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;UserAuthorizationRequest appid=&amp;quot;16777216&amp;quot; flags=&amp;quot;request&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationHost&amp;gt;destination.ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
  &amp;lt;DestinationRealm&amp;gt;ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
  &amp;lt;Username&amp;gt;0010100000000001@ims.mnc001.mcc001.3gppnetwork.org&amp;lt;/Username&amp;gt;&lt;br /&gt;
  &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;sifc,alias,ims-restoration&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
  &amp;lt;PublicIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;tel:+882800001&amp;lt;/PublicIdentity&amp;gt;&lt;br /&gt;
  &amp;lt;VisitedNetworkIdentifier vendor=&amp;quot;10415&amp;quot;&amp;gt;6578616d706c652e636f6d&amp;lt;/VisitedNetworkIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;UserAuthzType vendor=&amp;quot;10415&amp;quot;&amp;gt;register&amp;lt;/UserAuthzType&amp;gt;&lt;br /&gt;
  &amp;lt;UARFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;emergency-register&amp;lt;/UARFlags&amp;gt;&lt;br /&gt;
 &amp;lt;/UserAuthorizationRequest&amp;gt;&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/Cx/Dx</id>
		<title>Cx/Dx</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/Cx/Dx"/>
				<updated>2022-03-10T13:47:39Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: Created page with &amp;quot;== General ==  This page shows as examples Diameter XMLs for the Cx/Dx interface&amp;lt;br&amp;gt; Application id: 16777216&amp;lt;br&amp;gt; Vendor id: 10415  '''NOTES:''': * The examples below are not ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
&lt;br /&gt;
This page shows as examples Diameter XMLs for the Cx/Dx interface&amp;lt;br&amp;gt;&lt;br /&gt;
Application id: 16777216&amp;lt;br&amp;gt;&lt;br /&gt;
Vendor id: 10415&lt;br /&gt;
&lt;br /&gt;
'''NOTES:''':&lt;br /&gt;
* The examples below are not consistent with CSCF/HSS functionality. Their parameters are present here to be seen.&lt;br /&gt;
* In the following examples a ''${str}'' means its value must be reflected from received message. E.g. ''${hhident}'' must be set from received message ''hhident'' parameter.&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/MediaWiki:Sidebar</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/MediaWiki:Sidebar"/>
				<updated>2022-03-10T13:43:32Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* MAP &amp;amp; CAMEL XML Interface&lt;br /&gt;
** Introduction|Introduction&lt;br /&gt;
** Connection|Connection&lt;br /&gt;
** Common features|Common features&lt;br /&gt;
** Transport|Transport&lt;br /&gt;
** Application|Application&lt;br /&gt;
** Components|Components&lt;br /&gt;
** Operation codes|Operation codes&lt;br /&gt;
** Error codes|Error codes&lt;br /&gt;
** Latency determination|Latency determination&lt;br /&gt;
&lt;br /&gt;
* Diameter XML Interface&lt;br /&gt;
** Diameter Introduction|Introduction&lt;br /&gt;
** Diameter Connection|Connection&lt;br /&gt;
** Diameter Common features|Common features&lt;br /&gt;
** Diameter Transport|Transport&lt;br /&gt;
** Diameter Commands|Commands&lt;br /&gt;
** Diameter Latency determination|Latency determination&lt;br /&gt;
&lt;br /&gt;
*MAP and CAMEL operations&lt;br /&gt;
** Authentication and security|Authentication and security&lt;br /&gt;
** HLR functions|HLR functions&lt;br /&gt;
** SMS functions|SMS functions&lt;br /&gt;
** CAMEL operations|CAMEL operations&lt;br /&gt;
&lt;br /&gt;
* Diameter interfaces&lt;br /&gt;
**S6a/Sad|S6a/S6d&lt;br /&gt;
**Cx/Dx|Cx/Dx&lt;br /&gt;
&lt;br /&gt;
*Examples&lt;br /&gt;
** CRBT logic|CRBT logic&lt;br /&gt;
** CAMEL proxy|CAMEL proxy&lt;br /&gt;
** MSC simulator|MSC simulator&lt;br /&gt;
** USSD GW|USSD GW&lt;br /&gt;
** SIM Cards|SIM Cards&lt;br /&gt;
&lt;br /&gt;
*Resources&lt;br /&gt;
** Standards|Standards&lt;br /&gt;
&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/Diameter_Transport</id>
		<title>Diameter Transport</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/Diameter_Transport"/>
				<updated>2016-09-23T07:47:36Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The transport part of the message contains parameters related to identifying a message and controlling the transmission of a Diameter message. For requests from application serves, these parameters are combined with parameters from the Diameter command to configure the handling and routing of the message.&lt;br /&gt;
&lt;br /&gt;
This part of the message is marked by the '''&amp;lt;diameter/&amp;gt;''' tag and contains information related to sending/receiving messages, but are not part of the Diameter command. &lt;br /&gt;
&lt;br /&gt;
These are the parameters for sending a message (bold means mandatory, italic - optional):&lt;br /&gt;
* '''trans_id''': Unique identifier per direction used to match requests and answers and identify a certain Diameter transaction. In Diameter -&amp;gt; TCP application direction, this is set by the YATE Diameter level and it must be returned in the answer sent by the TCP application. In the TCP application -&amp;gt; Diameter direction, the TCP application sets it in the request and the Diameter level will return in the answer. The identifier has no required format, must be only a uniquely generated string per Diameter transaction.&lt;br /&gt;
* '''local_node''': Identifier of the local node (${realm}/${host}) to use for sending a request from the TCP application.  If not present, one must be set in ''connection.'' configuration of the listener. The one present in XML will override the configured one. &lt;br /&gt;
* ''timeout'': setting the timeout for a request in the TCP application -&amp;gt; Diameter direction. This allows overriding the configured Diameter timeout setting (optional). It can also be set in ''connection.'' configuration or in diameter configuration. This is in milliseconds.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;m&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;lt;diameter&amp;gt;&lt;br /&gt;
     &amp;lt;timeout&amp;gt;60000&amp;lt;/timeout&amp;gt;&lt;br /&gt;
     &amp;lt;local_node&amp;gt;example.com/hss.example.com&amp;lt;/local_node&amp;gt;&lt;br /&gt;
     &amp;lt;trans_id&amp;gt;hss/123456&amp;lt;/trans_id&amp;gt;&lt;br /&gt;
   &amp;lt;/diameter&amp;gt;&lt;br /&gt;
   ....&lt;br /&gt;
 &amp;lt;/m&amp;gt;&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/Diameter_Commands</id>
		<title>Diameter Commands</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/Diameter_Commands"/>
				<updated>2016-09-12T08:57:55Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the main part of the message holding the data specific to each Diameter interface.&lt;br /&gt;
&lt;br /&gt;
The Diameter command is wrapped in a XML element marked by ''&amp;lt;operation/&amp;gt;'' to make it easy to find the information in the XML. The child of the ''&amp;lt;operation/&amp;gt;'' is an XML describing the Diameter command decoded/to be encoded. The tag of the child element is the name of the command.&lt;br /&gt;
&lt;br /&gt;
Each message can only contain a single Diameter command message.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;m&amp;gt;&lt;br /&gt;
     ....  &lt;br /&gt;
     &amp;lt;operation&amp;gt;&lt;br /&gt;
         &amp;lt;InsertSubscriberDataRequest appid=&amp;quot;16777251&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;DestinationHost&amp;gt;mme.example.com&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
             &amp;lt;DestinationRealm&amp;gt;example.com&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
             &amp;lt;Username&amp;gt;004100123456789&amp;lt;/Username&amp;gt;&lt;br /&gt;
             &amp;lt;SubscriptionData vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
                 &amp;lt;MSISDN vendor=&amp;quot;10415&amp;quot;&amp;gt;40700100100&amp;lt;/MSISDN&amp;gt;&lt;br /&gt;
             &amp;lt;/SubscriptionData&amp;gt;&lt;br /&gt;
             &amp;lt;IDRFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;eps-user-state-req,eps-loc-info-req,local-tz-req,rat-type-req&amp;lt;/IDRFlags&amp;gt;&lt;br /&gt;
         &amp;lt;/InsertSubscriberDataRequest&amp;gt;&lt;br /&gt;
     &amp;lt;/operation&amp;gt;&lt;br /&gt;
  &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
For the XML child containing the command, the following parameters appear as attributes (bold - mandatory, italic - optional)&lt;br /&gt;
* '''appid''': Numeric identifier of the interface to which this message belongs to&lt;br /&gt;
* ''flags'' : Diameter flags for the message. For messages on direction TCP aplication -&amp;gt; Diameter translator, flags are optional in requests/answers(they will be added automatically by Diameter), but if they are added, they must be correctly correlated with the tag. An error answer must set flags to error.&lt;br /&gt;
* ''hhident'': Hop-to-hop identifier. Present in messages received by an application server. When an application sends a request, the Diameter translator automatically adds it&lt;br /&gt;
* ''eeident'': End-to-End identifier. Present in messages received by an application server. When an application sends a request, the Diameter translator automatically adds it&lt;br /&gt;
&lt;br /&gt;
For S6a messages, the application ID is 16777251. See [[S6a/Sad|S6a/S6d interface]].&lt;br /&gt;
&lt;br /&gt;
Non-base protocol Diameter AVPs must have '''vendor''' identifier set. For 3GPP AVPs this is 10415.&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
* Request (HSS -&amp;gt; MME &amp;amp; TCP -&amp;gt; Diameter):&lt;br /&gt;
 &amp;lt;m&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp-recv&amp;gt;1470663005862835&amp;lt;/timestamp-recv&amp;gt;&lt;br /&gt;
   &amp;lt;diameter&amp;gt;&lt;br /&gt;
     &amp;lt;timeout&amp;gt;60000&amp;lt;/timeout&amp;gt;&lt;br /&gt;
     &amp;lt;local_node&amp;gt;example.com/hss.example.com&amp;lt;/local_node&amp;gt;&lt;br /&gt;
     &amp;lt;trans_id&amp;gt;hss/123456&amp;lt;/trans_id&amp;gt;&lt;br /&gt;
   &amp;lt;/diameter&amp;gt;&lt;br /&gt;
   &amp;lt;operation&amp;gt;&lt;br /&gt;
     &amp;lt;InsertSubscriberDataRequest appid=&amp;quot;16777251&amp;quot; flags=&amp;quot;request,proxiable&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;DestinationHost&amp;gt;mme.example.com&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
       &amp;lt;DestinationRealm&amp;gt;example.com&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
       &amp;lt;Username&amp;gt;004100123456789&amp;lt;/Username&amp;gt;&lt;br /&gt;
       &amp;lt;SubscriptionData vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;MSISDN vendor=&amp;quot;10415&amp;quot;&amp;gt;40700100100&amp;lt;/MSISDN&amp;gt;&lt;br /&gt;
       &amp;lt;/SubscriptionData&amp;gt;&lt;br /&gt;
       &amp;lt;IDRFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;eps-user-state-req,eps-loc-info-req,local-tz-req,rat-type-req&amp;lt;/IDRFlags&amp;gt;&lt;br /&gt;
     &amp;lt;/InsertSubscriberDataRequest&amp;gt;&lt;br /&gt;
   &amp;lt;/operation&amp;gt;&lt;br /&gt;
 &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Answer (MME -&amp;gt; HSS &amp;amp; Diameter -&amp;gt; TCP):&lt;br /&gt;
 &amp;lt;m&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp-send&amp;gt;1470663005862835&amp;lt;/timestamp-send&amp;gt;&lt;br /&gt;
   &amp;lt;diameter&amp;gt;&lt;br /&gt;
     &amp;lt;trans_id&amp;gt;hss/123456&amp;lt;/trans_id&amp;gt;&lt;br /&gt;
   &amp;lt;/diameter&amp;gt;&lt;br /&gt;
   &amp;lt;operation&amp;gt;&lt;br /&gt;
     &amp;lt;InsertSubscriberDataAnswer appid=&amp;quot;16777251&amp;quot; flags=&amp;quot;proxiable&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;SessionId&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
       &amp;lt;AuthSessionState&amp;gt;1&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
       &amp;lt;IMSVOPSSS vendor=&amp;quot;10415&amp;quot;&amp;gt;yes&amp;lt;/IMSVOPSSS&amp;gt;&lt;br /&gt;
       &amp;lt;LastUEActivityTime vendor=&amp;quot;10415&amp;quot;&amp;gt;12345678&amp;lt;/LastUEActivityTime&amp;gt;&lt;br /&gt;
       &amp;lt;RATType vendor=&amp;quot;10415&amp;quot;&amp;gt;e-utran&amp;lt;/RATType&amp;gt;&lt;br /&gt;
       &amp;lt;IDAFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;network-node-area-restricted&amp;lt;/IDAFlags&amp;gt;&lt;br /&gt;
       &amp;lt;EpsUserState vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;MmeUserState vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;UserState vendor=&amp;quot;10415&amp;quot;&amp;gt;attached-reachable-for-paging&amp;lt;/UserState&amp;gt;&lt;br /&gt;
         &amp;lt;/MmeUserState&amp;gt;&lt;br /&gt;
       &amp;lt;/EpsUserState&amp;gt;&lt;br /&gt;
       &amp;lt;EpsLocationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;MmeLocationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;EutranCellGlobalIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;PlmnIdentity&amp;gt;123456&amp;lt;/PlmnIdentity&amp;gt;&lt;br /&gt;
             &amp;lt;CellIdentity&amp;gt;1234567&amp;lt;/CellIdentity&amp;gt;&lt;br /&gt;
           &amp;lt;/EutranCellGlobalIdentity&amp;gt;&lt;br /&gt;
           &amp;lt;GeographicalInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;0001020304050607&amp;lt;/GeographicalInfo&amp;gt;&lt;br /&gt;
           &amp;lt;GeodeticInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;00010203040506070809&amp;lt;/GeodeticInfo&amp;gt;&lt;br /&gt;
           &amp;lt;CurrentLocationRetrieved vendor=&amp;quot;10415&amp;quot;&amp;gt;active-loc-retrieval&amp;lt;/CurrentLocationRetrieved&amp;gt;&lt;br /&gt;
           &amp;lt;AgeOfLocationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;7&amp;lt;/AgeOfLocationInfo&amp;gt;&lt;br /&gt;
           &amp;lt;UserCsgInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CsgId vendor=&amp;quot;10415&amp;quot;&amp;gt;345&amp;lt;/CsgId&amp;gt;&lt;br /&gt;
             &amp;lt;CsgAccessMode vendor=&amp;quot;10415&amp;quot;&amp;gt;closed&amp;lt;/CsgAccessMode&amp;gt;&lt;br /&gt;
             &amp;lt;CsgMembershipInd vendor=&amp;quot;10415&amp;quot;&amp;gt;yes&amp;lt;/CsgMembershipInd&amp;gt;&lt;br /&gt;
           &amp;lt;/UserCsgInfo&amp;gt;&lt;br /&gt;
         &amp;lt;/MmeLocationInfo&amp;gt;&lt;br /&gt;
         &amp;lt;SgsnLocationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;SAI vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;PlmnIdentity&amp;gt;12345&amp;lt;/PlmnIdentity&amp;gt;&lt;br /&gt;
             &amp;lt;LAC&amp;gt;1122&amp;lt;/LAC&amp;gt;&lt;br /&gt;
             &amp;lt;SAC&amp;gt;99&amp;lt;/SAC&amp;gt;&lt;br /&gt;
           &amp;lt;/SAI&amp;gt;&lt;br /&gt;
         &amp;lt;/SgsnLocationInfo&amp;gt;&lt;br /&gt;
       &amp;lt;/EpsLocationInfo&amp;gt;&lt;br /&gt;
       &amp;lt;LocalTimeZone vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;TimeZone vendor=&amp;quot;10415&amp;quot;&amp;gt;+2&amp;lt;/TimeZone&amp;gt;&lt;br /&gt;
         &amp;lt;DaylightSavingTime vendor=&amp;quot;10415&amp;quot;&amp;gt;1&amp;lt;/DaylightSavingTime&amp;gt;&lt;br /&gt;
       &amp;lt;/LocalTimeZone&amp;gt;&lt;br /&gt;
       &amp;lt;IDAFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;network-node-area-restricted&amp;lt;/IDAFlags&amp;gt;&lt;br /&gt;
     &amp;lt;/InsertSubscriberDataAnswer&amp;gt;&lt;br /&gt;
   &amp;lt;/operation&amp;gt;&lt;br /&gt;
 &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Error (local host -&amp;gt; TCP application)&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;m&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp-send&amp;gt;1470663005862835&amp;lt;/timestamp-send&amp;gt;&lt;br /&gt;
   &amp;lt;diameter&amp;gt;&lt;br /&gt;
     &amp;lt;trans_id&amp;gt;hss/123456&amp;lt;/trans_id&amp;gt;&lt;br /&gt;
   &amp;lt;/diameter&amp;gt;&lt;br /&gt;
   &amp;lt;operation&amp;gt;&lt;br /&gt;
   &amp;lt;InsertSubscriberDataAnswer appid=&amp;quot;16777251&amp;quot; flags=&amp;quot;error&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;gt;&lt;br /&gt;
     &amp;lt;OriginHost&amp;gt;hss.example.com&amp;lt;/OriginHost&amp;gt;&lt;br /&gt;
     &amp;lt;OriginRealm&amp;gt;example.com&amp;lt;/OriginRealm&amp;gt;&lt;br /&gt;
     &amp;lt;ResultCode&amp;gt;3002&amp;lt;/ResultCode&amp;gt;&lt;br /&gt;
     &amp;lt;ErrorMessage&amp;gt;timeout&amp;lt;/ErrorMessage&amp;gt;&lt;br /&gt;
   &amp;lt;/InsertSubscriberDataAnswer&amp;gt;&lt;br /&gt;
   &amp;lt;/operation&amp;gt;&lt;br /&gt;
  &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Request (MME -&amp;gt; HSS &amp;amp; Diameter -&amp;gt; TCP)&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;m&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp-send&amp;gt;1470663005862835&amp;lt;/timestamp-send&amp;gt;&lt;br /&gt;
   &amp;lt;diameter&amp;gt;&lt;br /&gt;
     &amp;lt;trans_id&amp;gt;diam/456789&amp;lt;/trans_id&amp;gt;&lt;br /&gt;
   &amp;lt;/diameter&amp;gt;&lt;br /&gt;
   &amp;lt;operation&amp;gt;&lt;br /&gt;
     &amp;lt;AuthenticationInfoRequest appid=&amp;quot;16777251&amp;quot; flags=&amp;quot;request,proxiable&amp;quot;  hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;gt;&lt;br /&gt;
       &amp;lt;DestinationRealm&amp;gt;example.com&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
       &amp;lt;Username&amp;gt;004100123456789&amp;lt;/Username&amp;gt;&lt;br /&gt;
       &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;value id=&amp;quot;2&amp;quot;&amp;gt;sms-in-mme&amp;lt;/value&amp;gt;&lt;br /&gt;
       &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
       &amp;lt;RequestedEutranAuthInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;NumberOfRequestedVectors vendor=&amp;quot;10415&amp;quot;&amp;gt;5&amp;lt;/NumberOfRequestedVectors&amp;gt;&lt;br /&gt;
         &amp;lt;ImmediateResponsePreferred vendor=&amp;quot;10415&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;ReSynchronisationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;001122&amp;lt;/ReSynchronisationInfo&amp;gt;&lt;br /&gt;
       &amp;lt;/RequestedEutranAuthInfo&amp;gt;&lt;br /&gt;
       &amp;lt;RequestedUtranGeranAuthInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;NumberOfRequestedVectors vendor=&amp;quot;10415&amp;quot;&amp;gt;3&amp;lt;/NumberOfRequestedVectors&amp;gt;&lt;br /&gt;
         &amp;lt;ReSynchronisationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;001122&amp;lt;/ReSynchronisationInfo&amp;gt;&lt;br /&gt;
       &amp;lt;/RequestedUtranGeranAuthInfo&amp;gt;&lt;br /&gt;
       &amp;lt;VisitedPlmnId vendor=&amp;quot;10415&amp;quot;&amp;gt;040100&amp;lt;/VisitedPlmnId&amp;gt;&lt;br /&gt;
     &amp;lt;/AuthenticationInfoRequest&amp;gt;&lt;br /&gt;
   &amp;lt;/operation&amp;gt;&lt;br /&gt;
  &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Answer (HSS -&amp;gt; MME &amp;amp; TCP -&amp;gt; Diameter):&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;m&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp-recv&amp;gt;1470663005862835&amp;lt;/timestamp-recv&amp;gt;&lt;br /&gt;
   &amp;lt;diameter&amp;gt;&lt;br /&gt;
     &amp;lt;trans_id&amp;gt;diam/456789&amp;lt;/trans_id&amp;gt;&lt;br /&gt;
   &amp;lt;/diameter&amp;gt;&lt;br /&gt;
   &amp;lt;operation&amp;gt;&lt;br /&gt;
     &amp;lt;AuthenticationInfoAnswer appid=&amp;quot;16777251&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;SessionId&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
       &amp;lt;AuthSessionState&amp;gt;1&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
       &amp;lt;VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
         &amp;lt;value vendor=&amp;quot;10415&amp;quot; auth=&amp;quot;true&amp;quot;&amp;gt;16777251&amp;lt;/value&amp;gt;&lt;br /&gt;
       &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
       &amp;lt;ResultCode&amp;gt;2001&amp;lt;/ResultCode&amp;gt;&lt;br /&gt;
       &amp;lt;ErrorDiagnostic vendor=&amp;quot;10415&amp;quot;&amp;gt;odb-HPLMN-APN&amp;lt;/ErrorDiagnostic&amp;gt;&lt;br /&gt;
       &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;baoc,boic&amp;lt;/value&amp;gt;&lt;br /&gt;
       &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
      &amp;lt;AuthenticationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;EutranVector vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;ItemNumber vendor=&amp;quot;10415&amp;quot;&amp;gt;1&amp;lt;/ItemNumber&amp;gt;&lt;br /&gt;
         &amp;lt;RAND vendor=&amp;quot;10415&amp;quot;&amp;gt;01020304111213142122232441424344&amp;lt;/RAND&amp;gt;&lt;br /&gt;
         &amp;lt;XRES vendor=&amp;quot;10415&amp;quot;&amp;gt;12345678&amp;lt;/XRES&amp;gt;&lt;br /&gt;
         &amp;lt;AUTN vendor=&amp;quot;10415&amp;quot;&amp;gt;12345678&amp;lt;/AUTN&amp;gt;&lt;br /&gt;
         &amp;lt;KASME vendor=&amp;quot;10415&amp;quot;&amp;gt;12345678&amp;lt;/KASME&amp;gt;&lt;br /&gt;
       &amp;lt;/EutranVector&amp;gt;&lt;br /&gt;
       &amp;lt;EutranVector vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;ItemNumber vendor=&amp;quot;10415&amp;quot;&amp;gt;2&amp;lt;/ItemNumber&amp;gt;&lt;br /&gt;
         &amp;lt;RAND vendor=&amp;quot;10415&amp;quot;&amp;gt;01020304111213142122232441424344&amp;lt;/RAND&amp;gt;&lt;br /&gt;
         &amp;lt;XRES vendor=&amp;quot;10415&amp;quot;&amp;gt;00345678&amp;lt;/XRES&amp;gt;&lt;br /&gt;
         &amp;lt;AUTN vendor=&amp;quot;10415&amp;quot;&amp;gt;00345678&amp;lt;/AUTN&amp;gt;&lt;br /&gt;
         &amp;lt;KASME vendor=&amp;quot;10415&amp;quot;&amp;gt;00345678&amp;lt;/KASME&amp;gt;&lt;br /&gt;
       &amp;lt;/EutranVector&amp;gt;&lt;br /&gt;
       &amp;lt;UtranVector vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;RAND vendor=&amp;quot;10415&amp;quot;&amp;gt;01020304111213142122232441424344&amp;lt;/RAND&amp;gt;&lt;br /&gt;
         &amp;lt;XRES vendor=&amp;quot;10415&amp;quot;&amp;gt;22345678&amp;lt;/XRES&amp;gt;&lt;br /&gt;
         &amp;lt;AUTN vendor=&amp;quot;10415&amp;quot;&amp;gt;22345678&amp;lt;/AUTN&amp;gt;&lt;br /&gt;
         &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;22345678&amp;lt;/ConfidentialityKey&amp;gt;&lt;br /&gt;
         &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;22345678&amp;lt;/IntegrityKey&amp;gt;&lt;br /&gt;
       &amp;lt;/UtranVector&amp;gt;&lt;br /&gt;
       &amp;lt;GeranVector vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;RAND vendor=&amp;quot;10415&amp;quot;&amp;gt;01020304111213142122232441424344&amp;lt;/RAND&amp;gt;&lt;br /&gt;
         &amp;lt;SRES vendor=&amp;quot;10415&amp;quot;&amp;gt;34567811&amp;lt;/SRES&amp;gt;&lt;br /&gt;
         &amp;lt;Kc vendor=&amp;quot;10415&amp;quot;&amp;gt;34567811&amp;lt;/Kc&amp;gt;&lt;br /&gt;
       &amp;lt;/GeranVector&amp;gt;&lt;br /&gt;
     &amp;lt;/AuthenticationInfo&amp;gt;&lt;br /&gt;
    &amp;lt;/AuthenticationInfoAnswer&amp;gt;&lt;br /&gt;
   &amp;lt;/operation&amp;gt;&lt;br /&gt;
  &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Error (HSS -&amp;gt; MME &amp;amp; TCP -&amp;gt; Diameter, failure, auth data not found):&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;m&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp-recv&amp;gt;1470663005862835&amp;lt;/timestamp-recv&amp;gt;&lt;br /&gt;
   &amp;lt;diameter&amp;gt;&lt;br /&gt;
     &amp;lt;trans_id&amp;gt;diam/456789&amp;lt;/trans_id&amp;gt;&lt;br /&gt;
   &amp;lt;/diameter&amp;gt;&lt;br /&gt;
   &amp;lt;operation&amp;gt;&lt;br /&gt;
   &amp;lt;AuthenticationInfoAnswer appid=&amp;quot;16777251&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;SessionId&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
     &amp;lt;AuthSessionState&amp;gt;1&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
     &amp;lt;ExperimentalResult&amp;gt;&lt;br /&gt;
       &amp;lt;value vendor=&amp;quot;10415&amp;quot;&amp;gt;auth-data-unavailable&amp;lt;/value&amp;gt;&lt;br /&gt;
     &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
   &amp;lt;/AuthenticationInfoAnswer&amp;gt;&lt;br /&gt;
   &amp;lt;/operation&amp;gt;&lt;br /&gt;
  &amp;lt;/m&amp;gt;&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/Diameter_Commands</id>
		<title>Diameter Commands</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/Diameter_Commands"/>
				<updated>2016-09-12T08:53:45Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: /* Examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the main part of the message holding the data specific to each Diameter interface.&lt;br /&gt;
&lt;br /&gt;
The Diameter command is wrapped in a XML element marked by ''&amp;lt;operation/&amp;gt;'' to make it easy to find the information in the XML. The child of the ''&amp;lt;operation/&amp;gt;'' is an XML describing the Diameter command decoded/to be encoded. The tag of the child element is the name of the command.&lt;br /&gt;
&lt;br /&gt;
Each message can only contain a single Diameter command message.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;m&amp;gt;&lt;br /&gt;
     ....  &lt;br /&gt;
     &amp;lt;operation&amp;gt;&lt;br /&gt;
         &amp;lt;InsertSubscriberDataRequest appid=&amp;quot;16777251&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;DestinationHost&amp;gt;mme.example.com&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
             &amp;lt;DestinationRealm&amp;gt;example.com&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
             &amp;lt;Username&amp;gt;004100123456789&amp;lt;/Username&amp;gt;&lt;br /&gt;
             &amp;lt;SubscriptionData vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
                 &amp;lt;MSISDN vendor=&amp;quot;10415&amp;quot;&amp;gt;40700100100&amp;lt;/MSISDN&amp;gt;&lt;br /&gt;
             &amp;lt;/SubscriptionData&amp;gt;&lt;br /&gt;
             &amp;lt;IDRFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;eps-user-state-req,eps-loc-info-req,local-tz-req,rat-type-req&amp;lt;/IDRFlags&amp;gt;&lt;br /&gt;
         &amp;lt;/InsertSubscriberDataRequest&amp;gt;&lt;br /&gt;
     &amp;lt;/operation&amp;gt;&lt;br /&gt;
  &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
For the XML child containing the command, the following parameters appear as attributes (bold - mandatory, italic - optional)&lt;br /&gt;
* '''appid''': Numeric identifier of the interface to which this message belongs to&lt;br /&gt;
* ''flags'' : Diameter flags for the message. For messages on direction TCP aplication -&amp;gt; Diameter translator, flags are optional in requests/answers(they will be added automatically by Diameter), but if they are added, they must be correctly correlated with the tag. An error answer must set flags to error.&lt;br /&gt;
* ''hhident'': Hop-to-hop identifier. Present in messages received by an application server. When an application sends a request, the Diameter translator automatically adds it&lt;br /&gt;
* ''eeident'': End-to-End identifier. Present in messages received by an application server. When an application sends a request, the Diameter translator automatically adds it&lt;br /&gt;
&lt;br /&gt;
For S6a messages, the application ID is 16777251.&lt;br /&gt;
&lt;br /&gt;
Non-base protocol Diameter AVPs must have '''vendor''' identifier set. For 3GPP AVPs this is 10415.&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
* Request (HSS -&amp;gt; MME &amp;amp; TCP -&amp;gt; Diameter):&lt;br /&gt;
 &amp;lt;m&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp-recv&amp;gt;1470663005862835&amp;lt;/timestamp-recv&amp;gt;&lt;br /&gt;
   &amp;lt;diameter&amp;gt;&lt;br /&gt;
     &amp;lt;timeout&amp;gt;60000&amp;lt;/timeout&amp;gt;&lt;br /&gt;
     &amp;lt;local_node&amp;gt;example.com/hss.example.com&amp;lt;/local_node&amp;gt;&lt;br /&gt;
     &amp;lt;trans_id&amp;gt;hss/123456&amp;lt;/trans_id&amp;gt;&lt;br /&gt;
   &amp;lt;/diameter&amp;gt;&lt;br /&gt;
   &amp;lt;operation&amp;gt;&lt;br /&gt;
     &amp;lt;InsertSubscriberDataRequest appid=&amp;quot;16777251&amp;quot; flags=&amp;quot;request,proxiable&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;DestinationHost&amp;gt;mme.example.com&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
       &amp;lt;DestinationRealm&amp;gt;example.com&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
       &amp;lt;Username&amp;gt;004100123456789&amp;lt;/Username&amp;gt;&lt;br /&gt;
       &amp;lt;SubscriptionData vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;MSISDN vendor=&amp;quot;10415&amp;quot;&amp;gt;40700100100&amp;lt;/MSISDN&amp;gt;&lt;br /&gt;
       &amp;lt;/SubscriptionData&amp;gt;&lt;br /&gt;
       &amp;lt;IDRFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;eps-user-state-req,eps-loc-info-req,local-tz-req,rat-type-req&amp;lt;/IDRFlags&amp;gt;&lt;br /&gt;
     &amp;lt;/InsertSubscriberDataRequest&amp;gt;&lt;br /&gt;
   &amp;lt;/operation&amp;gt;&lt;br /&gt;
 &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Answer (MME -&amp;gt; HSS &amp;amp; Diameter -&amp;gt; TCP):&lt;br /&gt;
 &amp;lt;m&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp-send&amp;gt;1470663005862835&amp;lt;/timestamp-send&amp;gt;&lt;br /&gt;
   &amp;lt;diameter&amp;gt;&lt;br /&gt;
     &amp;lt;trans_id&amp;gt;hss/123456&amp;lt;/trans_id&amp;gt;&lt;br /&gt;
   &amp;lt;/diameter&amp;gt;&lt;br /&gt;
   &amp;lt;operation&amp;gt;&lt;br /&gt;
     &amp;lt;InsertSubscriberDataAnswer appid=&amp;quot;16777251&amp;quot; flags=&amp;quot;proxiable&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;SessionId&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
       &amp;lt;AuthSessionState&amp;gt;1&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
       &amp;lt;IMSVOPSSS vendor=&amp;quot;10415&amp;quot;&amp;gt;yes&amp;lt;/IMSVOPSSS&amp;gt;&lt;br /&gt;
       &amp;lt;LastUEActivityTime vendor=&amp;quot;10415&amp;quot;&amp;gt;12345678&amp;lt;/LastUEActivityTime&amp;gt;&lt;br /&gt;
       &amp;lt;RATType vendor=&amp;quot;10415&amp;quot;&amp;gt;e-utran&amp;lt;/RATType&amp;gt;&lt;br /&gt;
       &amp;lt;IDAFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;network-node-area-restricted&amp;lt;/IDAFlags&amp;gt;&lt;br /&gt;
       &amp;lt;EpsUserState vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;MmeUserState vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;UserState vendor=&amp;quot;10415&amp;quot;&amp;gt;attached-reachable-for-paging&amp;lt;/UserState&amp;gt;&lt;br /&gt;
         &amp;lt;/MmeUserState&amp;gt;&lt;br /&gt;
       &amp;lt;/EpsUserState&amp;gt;&lt;br /&gt;
       &amp;lt;EpsLocationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;MmeLocationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;EutranCellGlobalIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;PlmnIdentity&amp;gt;123456&amp;lt;/PlmnIdentity&amp;gt;&lt;br /&gt;
             &amp;lt;CellIdentity&amp;gt;1234567&amp;lt;/CellIdentity&amp;gt;&lt;br /&gt;
           &amp;lt;/EutranCellGlobalIdentity&amp;gt;&lt;br /&gt;
           &amp;lt;GeographicalInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;0001020304050607&amp;lt;/GeographicalInfo&amp;gt;&lt;br /&gt;
           &amp;lt;GeodeticInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;00010203040506070809&amp;lt;/GeodeticInfo&amp;gt;&lt;br /&gt;
           &amp;lt;CurrentLocationRetrieved vendor=&amp;quot;10415&amp;quot;&amp;gt;active-loc-retrieval&amp;lt;/CurrentLocationRetrieved&amp;gt;&lt;br /&gt;
           &amp;lt;AgeOfLocationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;7&amp;lt;/AgeOfLocationInfo&amp;gt;&lt;br /&gt;
           &amp;lt;UserCsgInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CsgId vendor=&amp;quot;10415&amp;quot;&amp;gt;345&amp;lt;/CsgId&amp;gt;&lt;br /&gt;
             &amp;lt;CsgAccessMode vendor=&amp;quot;10415&amp;quot;&amp;gt;closed&amp;lt;/CsgAccessMode&amp;gt;&lt;br /&gt;
             &amp;lt;CsgMembershipInd vendor=&amp;quot;10415&amp;quot;&amp;gt;yes&amp;lt;/CsgMembershipInd&amp;gt;&lt;br /&gt;
           &amp;lt;/UserCsgInfo&amp;gt;&lt;br /&gt;
         &amp;lt;/MmeLocationInfo&amp;gt;&lt;br /&gt;
         &amp;lt;SgsnLocationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;SAI vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;PlmnIdentity&amp;gt;12345&amp;lt;/PlmnIdentity&amp;gt;&lt;br /&gt;
             &amp;lt;LAC&amp;gt;1122&amp;lt;/LAC&amp;gt;&lt;br /&gt;
             &amp;lt;SAC&amp;gt;99&amp;lt;/SAC&amp;gt;&lt;br /&gt;
           &amp;lt;/SAI&amp;gt;&lt;br /&gt;
         &amp;lt;/SgsnLocationInfo&amp;gt;&lt;br /&gt;
       &amp;lt;/EpsLocationInfo&amp;gt;&lt;br /&gt;
       &amp;lt;LocalTimeZone vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;TimeZone vendor=&amp;quot;10415&amp;quot;&amp;gt;+2&amp;lt;/TimeZone&amp;gt;&lt;br /&gt;
         &amp;lt;DaylightSavingTime vendor=&amp;quot;10415&amp;quot;&amp;gt;1&amp;lt;/DaylightSavingTime&amp;gt;&lt;br /&gt;
       &amp;lt;/LocalTimeZone&amp;gt;&lt;br /&gt;
       &amp;lt;IDAFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;network-node-area-restricted&amp;lt;/IDAFlags&amp;gt;&lt;br /&gt;
     &amp;lt;/InsertSubscriberDataAnswer&amp;gt;&lt;br /&gt;
   &amp;lt;/operation&amp;gt;&lt;br /&gt;
 &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Error (local host -&amp;gt; TCP application)&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;m&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp-send&amp;gt;1470663005862835&amp;lt;/timestamp-send&amp;gt;&lt;br /&gt;
   &amp;lt;diameter&amp;gt;&lt;br /&gt;
     &amp;lt;trans_id&amp;gt;hss/123456&amp;lt;/trans_id&amp;gt;&lt;br /&gt;
   &amp;lt;/diameter&amp;gt;&lt;br /&gt;
   &amp;lt;operation&amp;gt;&lt;br /&gt;
   &amp;lt;InsertSubscriberDataAnswer appid=&amp;quot;16777251&amp;quot; flags=&amp;quot;error&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;gt;&lt;br /&gt;
     &amp;lt;OriginHost&amp;gt;hss.example.com&amp;lt;/OriginHost&amp;gt;&lt;br /&gt;
     &amp;lt;OriginRealm&amp;gt;example.com&amp;lt;/OriginRealm&amp;gt;&lt;br /&gt;
     &amp;lt;ResultCode&amp;gt;3002&amp;lt;/ResultCode&amp;gt;&lt;br /&gt;
     &amp;lt;ErrorMessage&amp;gt;timeout&amp;lt;/ErrorMessage&amp;gt;&lt;br /&gt;
   &amp;lt;/InsertSubscriberDataAnswer&amp;gt;&lt;br /&gt;
   &amp;lt;/operation&amp;gt;&lt;br /&gt;
  &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Request (MME -&amp;gt; HSS &amp;amp; Diameter -&amp;gt; TCP)&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;m&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp-send&amp;gt;1470663005862835&amp;lt;/timestamp-send&amp;gt;&lt;br /&gt;
   &amp;lt;diameter&amp;gt;&lt;br /&gt;
     &amp;lt;trans_id&amp;gt;diam/456789&amp;lt;/trans_id&amp;gt;&lt;br /&gt;
   &amp;lt;/diameter&amp;gt;&lt;br /&gt;
   &amp;lt;operation&amp;gt;&lt;br /&gt;
     &amp;lt;AuthenticationInfoRequest appid=&amp;quot;16777251&amp;quot; flags=&amp;quot;request,proxiable&amp;quot;  hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;gt;&lt;br /&gt;
       &amp;lt;DestinationRealm&amp;gt;example.com&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
       &amp;lt;Username&amp;gt;004100123456789&amp;lt;/Username&amp;gt;&lt;br /&gt;
       &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;value id=&amp;quot;2&amp;quot;&amp;gt;sms-in-mme&amp;lt;/value&amp;gt;&lt;br /&gt;
       &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
       &amp;lt;RequestedEutranAuthInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;NumberOfRequestedVectors vendor=&amp;quot;10415&amp;quot;&amp;gt;5&amp;lt;/NumberOfRequestedVectors&amp;gt;&lt;br /&gt;
         &amp;lt;ImmediateResponsePreferred vendor=&amp;quot;10415&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;ReSynchronisationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;001122&amp;lt;/ReSynchronisationInfo&amp;gt;&lt;br /&gt;
       &amp;lt;/RequestedEutranAuthInfo&amp;gt;&lt;br /&gt;
       &amp;lt;RequestedUtranGeranAuthInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;NumberOfRequestedVectors vendor=&amp;quot;10415&amp;quot;&amp;gt;3&amp;lt;/NumberOfRequestedVectors&amp;gt;&lt;br /&gt;
         &amp;lt;ReSynchronisationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;001122&amp;lt;/ReSynchronisationInfo&amp;gt;&lt;br /&gt;
       &amp;lt;/RequestedUtranGeranAuthInfo&amp;gt;&lt;br /&gt;
       &amp;lt;VisitedPlmnId vendor=&amp;quot;10415&amp;quot;&amp;gt;040100&amp;lt;/VisitedPlmnId&amp;gt;&lt;br /&gt;
     &amp;lt;/AuthenticationInfoRequest&amp;gt;&lt;br /&gt;
   &amp;lt;/operation&amp;gt;&lt;br /&gt;
  &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Answer (HSS -&amp;gt; MME &amp;amp; TCP -&amp;gt; Diameter):&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;m&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp-recv&amp;gt;1470663005862835&amp;lt;/timestamp-recv&amp;gt;&lt;br /&gt;
   &amp;lt;diameter&amp;gt;&lt;br /&gt;
     &amp;lt;trans_id&amp;gt;diam/456789&amp;lt;/trans_id&amp;gt;&lt;br /&gt;
   &amp;lt;/diameter&amp;gt;&lt;br /&gt;
   &amp;lt;operation&amp;gt;&lt;br /&gt;
     &amp;lt;AuthenticationInfoAnswer appid=&amp;quot;16777251&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;SessionId&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
       &amp;lt;AuthSessionState&amp;gt;1&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
       &amp;lt;VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
         &amp;lt;value vendor=&amp;quot;10415&amp;quot; auth=&amp;quot;true&amp;quot;&amp;gt;16777251&amp;lt;/value&amp;gt;&lt;br /&gt;
       &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
       &amp;lt;ResultCode&amp;gt;2001&amp;lt;/ResultCode&amp;gt;&lt;br /&gt;
       &amp;lt;ErrorDiagnostic vendor=&amp;quot;10415&amp;quot;&amp;gt;odb-HPLMN-APN&amp;lt;/ErrorDiagnostic&amp;gt;&lt;br /&gt;
       &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;baoc,boic&amp;lt;/value&amp;gt;&lt;br /&gt;
       &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
      &amp;lt;AuthenticationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;EutranVector vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;ItemNumber vendor=&amp;quot;10415&amp;quot;&amp;gt;1&amp;lt;/ItemNumber&amp;gt;&lt;br /&gt;
         &amp;lt;RAND vendor=&amp;quot;10415&amp;quot;&amp;gt;01020304111213142122232441424344&amp;lt;/RAND&amp;gt;&lt;br /&gt;
         &amp;lt;XRES vendor=&amp;quot;10415&amp;quot;&amp;gt;12345678&amp;lt;/XRES&amp;gt;&lt;br /&gt;
         &amp;lt;AUTN vendor=&amp;quot;10415&amp;quot;&amp;gt;12345678&amp;lt;/AUTN&amp;gt;&lt;br /&gt;
         &amp;lt;KASME vendor=&amp;quot;10415&amp;quot;&amp;gt;12345678&amp;lt;/KASME&amp;gt;&lt;br /&gt;
       &amp;lt;/EutranVector&amp;gt;&lt;br /&gt;
       &amp;lt;EutranVector vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;ItemNumber vendor=&amp;quot;10415&amp;quot;&amp;gt;2&amp;lt;/ItemNumber&amp;gt;&lt;br /&gt;
         &amp;lt;RAND vendor=&amp;quot;10415&amp;quot;&amp;gt;01020304111213142122232441424344&amp;lt;/RAND&amp;gt;&lt;br /&gt;
         &amp;lt;XRES vendor=&amp;quot;10415&amp;quot;&amp;gt;00345678&amp;lt;/XRES&amp;gt;&lt;br /&gt;
         &amp;lt;AUTN vendor=&amp;quot;10415&amp;quot;&amp;gt;00345678&amp;lt;/AUTN&amp;gt;&lt;br /&gt;
         &amp;lt;KASME vendor=&amp;quot;10415&amp;quot;&amp;gt;00345678&amp;lt;/KASME&amp;gt;&lt;br /&gt;
       &amp;lt;/EutranVector&amp;gt;&lt;br /&gt;
       &amp;lt;UtranVector vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;RAND vendor=&amp;quot;10415&amp;quot;&amp;gt;01020304111213142122232441424344&amp;lt;/RAND&amp;gt;&lt;br /&gt;
         &amp;lt;XRES vendor=&amp;quot;10415&amp;quot;&amp;gt;22345678&amp;lt;/XRES&amp;gt;&lt;br /&gt;
         &amp;lt;AUTN vendor=&amp;quot;10415&amp;quot;&amp;gt;22345678&amp;lt;/AUTN&amp;gt;&lt;br /&gt;
         &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;22345678&amp;lt;/ConfidentialityKey&amp;gt;&lt;br /&gt;
         &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;22345678&amp;lt;/IntegrityKey&amp;gt;&lt;br /&gt;
       &amp;lt;/UtranVector&amp;gt;&lt;br /&gt;
       &amp;lt;GeranVector vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;RAND vendor=&amp;quot;10415&amp;quot;&amp;gt;01020304111213142122232441424344&amp;lt;/RAND&amp;gt;&lt;br /&gt;
         &amp;lt;SRES vendor=&amp;quot;10415&amp;quot;&amp;gt;34567811&amp;lt;/SRES&amp;gt;&lt;br /&gt;
         &amp;lt;Kc vendor=&amp;quot;10415&amp;quot;&amp;gt;34567811&amp;lt;/Kc&amp;gt;&lt;br /&gt;
       &amp;lt;/GeranVector&amp;gt;&lt;br /&gt;
     &amp;lt;/AuthenticationInfo&amp;gt;&lt;br /&gt;
    &amp;lt;/AuthenticationInfoAnswer&amp;gt;&lt;br /&gt;
   &amp;lt;/operation&amp;gt;&lt;br /&gt;
  &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Error (HSS -&amp;gt; MME &amp;amp; TCP -&amp;gt; Diameter, failure, auth data not found):&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;m&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp-recv&amp;gt;1470663005862835&amp;lt;/timestamp-recv&amp;gt;&lt;br /&gt;
   &amp;lt;diameter&amp;gt;&lt;br /&gt;
     &amp;lt;trans_id&amp;gt;diam/456789&amp;lt;/trans_id&amp;gt;&lt;br /&gt;
   &amp;lt;/diameter&amp;gt;&lt;br /&gt;
   &amp;lt;operation&amp;gt;&lt;br /&gt;
   &amp;lt;AuthenticationInfoAnswer appid=&amp;quot;16777251&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;SessionId&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
     &amp;lt;AuthSessionState&amp;gt;1&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
     &amp;lt;ExperimentalResult&amp;gt;&lt;br /&gt;
       &amp;lt;value vendor=&amp;quot;10415&amp;quot;&amp;gt;auth-data-unavailable&amp;lt;/value&amp;gt;&lt;br /&gt;
     &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
   &amp;lt;/AuthenticationInfoAnswer&amp;gt;&lt;br /&gt;
   &amp;lt;/operation&amp;gt;&lt;br /&gt;
  &amp;lt;/m&amp;gt;&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/Diameter_Commands</id>
		<title>Diameter Commands</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/Diameter_Commands"/>
				<updated>2016-09-12T08:51:15Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: /* Parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the main part of the message holding the data specific to each Diameter interface.&lt;br /&gt;
&lt;br /&gt;
The Diameter command is wrapped in a XML element marked by ''&amp;lt;operation/&amp;gt;'' to make it easy to find the information in the XML. The child of the ''&amp;lt;operation/&amp;gt;'' is an XML describing the Diameter command decoded/to be encoded. The tag of the child element is the name of the command.&lt;br /&gt;
&lt;br /&gt;
Each message can only contain a single Diameter command message.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;m&amp;gt;&lt;br /&gt;
     ....  &lt;br /&gt;
     &amp;lt;operation&amp;gt;&lt;br /&gt;
         &amp;lt;InsertSubscriberDataRequest appid=&amp;quot;16777251&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;DestinationHost&amp;gt;mme.example.com&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
             &amp;lt;DestinationRealm&amp;gt;example.com&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
             &amp;lt;Username&amp;gt;004100123456789&amp;lt;/Username&amp;gt;&lt;br /&gt;
             &amp;lt;SubscriptionData vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
                 &amp;lt;MSISDN vendor=&amp;quot;10415&amp;quot;&amp;gt;40700100100&amp;lt;/MSISDN&amp;gt;&lt;br /&gt;
             &amp;lt;/SubscriptionData&amp;gt;&lt;br /&gt;
             &amp;lt;IDRFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;eps-user-state-req,eps-loc-info-req,local-tz-req,rat-type-req&amp;lt;/IDRFlags&amp;gt;&lt;br /&gt;
         &amp;lt;/InsertSubscriberDataRequest&amp;gt;&lt;br /&gt;
     &amp;lt;/operation&amp;gt;&lt;br /&gt;
  &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
For the XML child containing the command, the following parameters appear as attributes (bold - mandatory, italic - optional)&lt;br /&gt;
* '''appid''': Numeric identifier of the interface to which this message belongs to&lt;br /&gt;
* ''flags'' : Diameter flags for the message. For messages on direction TCP aplication -&amp;gt; Diameter translator, flags are optional in requests/answers(they will be added automatically by Diameter), but if they are added, they must be correctly correlated with the tag. An error answer must set flags to error.&lt;br /&gt;
* ''hhident'': Hop-to-hop identifier. Present in messages received by an application server. When an application sends a request, the Diameter translator automatically adds it&lt;br /&gt;
* ''eeident'': End-to-End identifier. Present in messages received by an application server. When an application sends a request, the Diameter translator automatically adds it&lt;br /&gt;
&lt;br /&gt;
For S6a messages, the application ID is 16777251.&lt;br /&gt;
&lt;br /&gt;
Non-base protocol Diameter AVPs must have '''vendor''' identifier set. For 3GPP AVPs this is 10415.&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
* Request (HSS -&amp;gt; MME &amp;amp; TCP -&amp;gt; Diameter):&lt;br /&gt;
 &amp;lt;m&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp-recv&amp;gt;1470663005862835&amp;lt;/timestamp-recv&amp;gt;&lt;br /&gt;
   &amp;lt;diameter&amp;gt;&lt;br /&gt;
     &amp;lt;timeout&amp;gt;60000&amp;lt;/timeout&amp;gt;&lt;br /&gt;
     &amp;lt;local_node&amp;gt;example.com/hss.example.com&amp;lt;/local_node&amp;gt;&lt;br /&gt;
     &amp;lt;trans_id&amp;gt;hss/123456&amp;lt;/trans_id&amp;gt;&lt;br /&gt;
   &amp;lt;/diameter&amp;gt;&lt;br /&gt;
   &amp;lt;operation&amp;gt;&lt;br /&gt;
     &amp;lt;InsertSubscriberDataRequest appid=&amp;quot;16777251&amp;quot; flags=&amp;quot;request,proxiable&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;DestinationHost&amp;gt;mme.example.com&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
       &amp;lt;DestinationRealm&amp;gt;example.com&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
       &amp;lt;Username&amp;gt;004100123456789&amp;lt;/Username&amp;gt;&lt;br /&gt;
       &amp;lt;SubscriptionData vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;MSISDN vendor=&amp;quot;10415&amp;quot;&amp;gt;40700100100&amp;lt;/MSISDN&amp;gt;&lt;br /&gt;
       &amp;lt;/SubscriptionData&amp;gt;&lt;br /&gt;
       &amp;lt;IDRFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;eps-user-state-req,eps-loc-info-req,local-tz-req,rat-type-req&amp;lt;/IDRFlags&amp;gt;&lt;br /&gt;
     &amp;lt;/InsertSubscriberDataRequest&amp;gt;&lt;br /&gt;
   &amp;lt;/operation&amp;gt;&lt;br /&gt;
 &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Answer (MME -&amp;gt; HSS):&lt;br /&gt;
 &amp;lt;m&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp-send&amp;gt;1470663005862835&amp;lt;/timestamp-send&amp;gt;&lt;br /&gt;
   &amp;lt;diameter&amp;gt;&lt;br /&gt;
     &amp;lt;trans_id&amp;gt;hss/123456&amp;lt;/trans_id&amp;gt;&lt;br /&gt;
   &amp;lt;/diameter&amp;gt;&lt;br /&gt;
   &amp;lt;operation&amp;gt;&lt;br /&gt;
     &amp;lt;InsertSubscriberDataAnswer appid=&amp;quot;16777251&amp;quot; flags=&amp;quot;proxiable&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;SessionId&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
       &amp;lt;AuthSessionState&amp;gt;1&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
       &amp;lt;IMSVOPSSS vendor=&amp;quot;10415&amp;quot;&amp;gt;yes&amp;lt;/IMSVOPSSS&amp;gt;&lt;br /&gt;
       &amp;lt;LastUEActivityTime vendor=&amp;quot;10415&amp;quot;&amp;gt;12345678&amp;lt;/LastUEActivityTime&amp;gt;&lt;br /&gt;
       &amp;lt;RATType vendor=&amp;quot;10415&amp;quot;&amp;gt;e-utran&amp;lt;/RATType&amp;gt;&lt;br /&gt;
       &amp;lt;IDAFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;network-node-area-restricted&amp;lt;/IDAFlags&amp;gt;&lt;br /&gt;
       &amp;lt;EpsUserState vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;MmeUserState vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;UserState vendor=&amp;quot;10415&amp;quot;&amp;gt;attached-reachable-for-paging&amp;lt;/UserState&amp;gt;&lt;br /&gt;
         &amp;lt;/MmeUserState&amp;gt;&lt;br /&gt;
       &amp;lt;/EpsUserState&amp;gt;&lt;br /&gt;
       &amp;lt;EpsLocationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;MmeLocationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;EutranCellGlobalIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;PlmnIdentity&amp;gt;123456&amp;lt;/PlmnIdentity&amp;gt;&lt;br /&gt;
             &amp;lt;CellIdentity&amp;gt;1234567&amp;lt;/CellIdentity&amp;gt;&lt;br /&gt;
           &amp;lt;/EutranCellGlobalIdentity&amp;gt;&lt;br /&gt;
           &amp;lt;GeographicalInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;0001020304050607&amp;lt;/GeographicalInfo&amp;gt;&lt;br /&gt;
           &amp;lt;GeodeticInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;00010203040506070809&amp;lt;/GeodeticInfo&amp;gt;&lt;br /&gt;
           &amp;lt;CurrentLocationRetrieved vendor=&amp;quot;10415&amp;quot;&amp;gt;active-loc-retrieval&amp;lt;/CurrentLocationRetrieved&amp;gt;&lt;br /&gt;
           &amp;lt;AgeOfLocationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;7&amp;lt;/AgeOfLocationInfo&amp;gt;&lt;br /&gt;
           &amp;lt;UserCsgInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CsgId vendor=&amp;quot;10415&amp;quot;&amp;gt;345&amp;lt;/CsgId&amp;gt;&lt;br /&gt;
             &amp;lt;CsgAccessMode vendor=&amp;quot;10415&amp;quot;&amp;gt;closed&amp;lt;/CsgAccessMode&amp;gt;&lt;br /&gt;
             &amp;lt;CsgMembershipInd vendor=&amp;quot;10415&amp;quot;&amp;gt;yes&amp;lt;/CsgMembershipInd&amp;gt;&lt;br /&gt;
           &amp;lt;/UserCsgInfo&amp;gt;&lt;br /&gt;
         &amp;lt;/MmeLocationInfo&amp;gt;&lt;br /&gt;
         &amp;lt;SgsnLocationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;SAI vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;PlmnIdentity&amp;gt;12345&amp;lt;/PlmnIdentity&amp;gt;&lt;br /&gt;
             &amp;lt;LAC&amp;gt;1122&amp;lt;/LAC&amp;gt;&lt;br /&gt;
             &amp;lt;SAC&amp;gt;99&amp;lt;/SAC&amp;gt;&lt;br /&gt;
           &amp;lt;/SAI&amp;gt;&lt;br /&gt;
         &amp;lt;/SgsnLocationInfo&amp;gt;&lt;br /&gt;
       &amp;lt;/EpsLocationInfo&amp;gt;&lt;br /&gt;
       &amp;lt;LocalTimeZone vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;TimeZone vendor=&amp;quot;10415&amp;quot;&amp;gt;+2&amp;lt;/TimeZone&amp;gt;&lt;br /&gt;
         &amp;lt;DaylightSavingTime vendor=&amp;quot;10415&amp;quot;&amp;gt;1&amp;lt;/DaylightSavingTime&amp;gt;&lt;br /&gt;
       &amp;lt;/LocalTimeZone&amp;gt;&lt;br /&gt;
       &amp;lt;IDAFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;network-node-area-restricted&amp;lt;/IDAFlags&amp;gt;&lt;br /&gt;
     &amp;lt;/InsertSubscriberDataAnswer&amp;gt;&lt;br /&gt;
   &amp;lt;/operation&amp;gt;&lt;br /&gt;
 &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Error (local host -&amp;gt; TCP application)&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;m&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp-send&amp;gt;1470663005862835&amp;lt;/timestamp-send&amp;gt;&lt;br /&gt;
   &amp;lt;diameter&amp;gt;&lt;br /&gt;
     &amp;lt;trans_id&amp;gt;hss/123456&amp;lt;/trans_id&amp;gt;&lt;br /&gt;
   &amp;lt;/diameter&amp;gt;&lt;br /&gt;
   &amp;lt;operation&amp;gt;&lt;br /&gt;
   &amp;lt;InsertSubscriberDataAnswer appid=&amp;quot;16777251&amp;quot; flags=&amp;quot;error&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;gt;&lt;br /&gt;
     &amp;lt;OriginHost&amp;gt;hss.example.com&amp;lt;/OriginHost&amp;gt;&lt;br /&gt;
     &amp;lt;OriginRealm&amp;gt;example.com&amp;lt;/OriginRealm&amp;gt;&lt;br /&gt;
     &amp;lt;ResultCode&amp;gt;3002&amp;lt;/ResultCode&amp;gt;&lt;br /&gt;
     &amp;lt;ErrorMessage&amp;gt;timeout&amp;lt;/ErrorMessage&amp;gt;&lt;br /&gt;
   &amp;lt;/InsertSubscriberDataAnswer&amp;gt;&lt;br /&gt;
   &amp;lt;/operation&amp;gt;&lt;br /&gt;
  &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Request (MME -&amp;gt; HSS &amp;amp; Diameter -&amp;gt; TCP)&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;m&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp-send&amp;gt;1470663005862835&amp;lt;/timestamp-send&amp;gt;&lt;br /&gt;
   &amp;lt;diameter&amp;gt;&lt;br /&gt;
     &amp;lt;trans_id&amp;gt;diam/456789&amp;lt;/trans_id&amp;gt;&lt;br /&gt;
   &amp;lt;/diameter&amp;gt;&lt;br /&gt;
   &amp;lt;operation&amp;gt;&lt;br /&gt;
     &amp;lt;AuthenticationInfoRequest appid=&amp;quot;16777251&amp;quot; flags=&amp;quot;request,proxiable&amp;quot;  hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;gt;&lt;br /&gt;
       &amp;lt;DestinationRealm&amp;gt;example.com&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
       &amp;lt;Username&amp;gt;004100123456789&amp;lt;/Username&amp;gt;&lt;br /&gt;
       &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;value id=&amp;quot;2&amp;quot;&amp;gt;sms-in-mme&amp;lt;/value&amp;gt;&lt;br /&gt;
       &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
       &amp;lt;RequestedEutranAuthInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;NumberOfRequestedVectors vendor=&amp;quot;10415&amp;quot;&amp;gt;5&amp;lt;/NumberOfRequestedVectors&amp;gt;&lt;br /&gt;
         &amp;lt;ImmediateResponsePreferred vendor=&amp;quot;10415&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;ReSynchronisationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;001122&amp;lt;/ReSynchronisationInfo&amp;gt;&lt;br /&gt;
       &amp;lt;/RequestedEutranAuthInfo&amp;gt;&lt;br /&gt;
       &amp;lt;RequestedUtranGeranAuthInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;NumberOfRequestedVectors vendor=&amp;quot;10415&amp;quot;&amp;gt;3&amp;lt;/NumberOfRequestedVectors&amp;gt;&lt;br /&gt;
         &amp;lt;ReSynchronisationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;001122&amp;lt;/ReSynchronisationInfo&amp;gt;&lt;br /&gt;
       &amp;lt;/RequestedUtranGeranAuthInfo&amp;gt;&lt;br /&gt;
       &amp;lt;VisitedPlmnId vendor=&amp;quot;10415&amp;quot;&amp;gt;040100&amp;lt;/VisitedPlmnId&amp;gt;&lt;br /&gt;
     &amp;lt;/AuthenticationInfoRequest&amp;gt;&lt;br /&gt;
   &amp;lt;/operation&amp;gt;&lt;br /&gt;
  &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Answer (HSS -&amp;gt; MME &amp;amp; TCP -&amp;gt; Diameter):&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;m&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp-recv&amp;gt;1470663005862835&amp;lt;/timestamp-recv&amp;gt;&lt;br /&gt;
   &amp;lt;diameter&amp;gt;&lt;br /&gt;
     &amp;lt;trans_id&amp;gt;diam/456789&amp;lt;/trans_id&amp;gt;&lt;br /&gt;
   &amp;lt;/diameter&amp;gt;&lt;br /&gt;
   &amp;lt;operation&amp;gt;&lt;br /&gt;
     &amp;lt;AuthenticationInfoAnswer appid=&amp;quot;16777251&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;SessionId&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
       &amp;lt;AuthSessionState&amp;gt;1&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
       &amp;lt;VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
         &amp;lt;value vendor=&amp;quot;10415&amp;quot; auth=&amp;quot;true&amp;quot;&amp;gt;16777251&amp;lt;/value&amp;gt;&lt;br /&gt;
       &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
       &amp;lt;ResultCode&amp;gt;2001&amp;lt;/ResultCode&amp;gt;&lt;br /&gt;
       &amp;lt;ErrorDiagnostic vendor=&amp;quot;10415&amp;quot;&amp;gt;odb-HPLMN-APN&amp;lt;/ErrorDiagnostic&amp;gt;&lt;br /&gt;
       &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;baoc,boic&amp;lt;/value&amp;gt;&lt;br /&gt;
       &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
      &amp;lt;AuthenticationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;EutranVector vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;ItemNumber vendor=&amp;quot;10415&amp;quot;&amp;gt;1&amp;lt;/ItemNumber&amp;gt;&lt;br /&gt;
         &amp;lt;RAND vendor=&amp;quot;10415&amp;quot;&amp;gt;01020304111213142122232441424344&amp;lt;/RAND&amp;gt;&lt;br /&gt;
         &amp;lt;XRES vendor=&amp;quot;10415&amp;quot;&amp;gt;12345678&amp;lt;/XRES&amp;gt;&lt;br /&gt;
         &amp;lt;AUTN vendor=&amp;quot;10415&amp;quot;&amp;gt;12345678&amp;lt;/AUTN&amp;gt;&lt;br /&gt;
         &amp;lt;KASME vendor=&amp;quot;10415&amp;quot;&amp;gt;12345678&amp;lt;/KASME&amp;gt;&lt;br /&gt;
       &amp;lt;/EutranVector&amp;gt;&lt;br /&gt;
       &amp;lt;EutranVector vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;ItemNumber vendor=&amp;quot;10415&amp;quot;&amp;gt;2&amp;lt;/ItemNumber&amp;gt;&lt;br /&gt;
         &amp;lt;RAND vendor=&amp;quot;10415&amp;quot;&amp;gt;01020304111213142122232441424344&amp;lt;/RAND&amp;gt;&lt;br /&gt;
         &amp;lt;XRES vendor=&amp;quot;10415&amp;quot;&amp;gt;00345678&amp;lt;/XRES&amp;gt;&lt;br /&gt;
         &amp;lt;AUTN vendor=&amp;quot;10415&amp;quot;&amp;gt;00345678&amp;lt;/AUTN&amp;gt;&lt;br /&gt;
         &amp;lt;KASME vendor=&amp;quot;10415&amp;quot;&amp;gt;00345678&amp;lt;/KASME&amp;gt;&lt;br /&gt;
       &amp;lt;/EutranVector&amp;gt;&lt;br /&gt;
       &amp;lt;UtranVector vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;RAND vendor=&amp;quot;10415&amp;quot;&amp;gt;01020304111213142122232441424344&amp;lt;/RAND&amp;gt;&lt;br /&gt;
         &amp;lt;XRES vendor=&amp;quot;10415&amp;quot;&amp;gt;22345678&amp;lt;/XRES&amp;gt;&lt;br /&gt;
         &amp;lt;AUTN vendor=&amp;quot;10415&amp;quot;&amp;gt;22345678&amp;lt;/AUTN&amp;gt;&lt;br /&gt;
         &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;22345678&amp;lt;/ConfidentialityKey&amp;gt;&lt;br /&gt;
         &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;22345678&amp;lt;/IntegrityKey&amp;gt;&lt;br /&gt;
       &amp;lt;/UtranVector&amp;gt;&lt;br /&gt;
       &amp;lt;GeranVector vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;RAND vendor=&amp;quot;10415&amp;quot;&amp;gt;01020304111213142122232441424344&amp;lt;/RAND&amp;gt;&lt;br /&gt;
         &amp;lt;SRES vendor=&amp;quot;10415&amp;quot;&amp;gt;34567811&amp;lt;/SRES&amp;gt;&lt;br /&gt;
         &amp;lt;Kc vendor=&amp;quot;10415&amp;quot;&amp;gt;34567811&amp;lt;/Kc&amp;gt;&lt;br /&gt;
       &amp;lt;/GeranVector&amp;gt;&lt;br /&gt;
     &amp;lt;/AuthenticationInfo&amp;gt;&lt;br /&gt;
    &amp;lt;/AuthenticationInfoAnswer&amp;gt;&lt;br /&gt;
   &amp;lt;/operation&amp;gt;&lt;br /&gt;
  &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Error (HSS -&amp;gt; MME &amp;amp; TCP -&amp;gt; Diameter, failure, auth data not found):&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;m&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp-recv&amp;gt;1470663005862835&amp;lt;/timestamp-recv&amp;gt;&lt;br /&gt;
   &amp;lt;diameter&amp;gt;&lt;br /&gt;
     &amp;lt;trans_id&amp;gt;diam/456789&amp;lt;/trans_id&amp;gt;&lt;br /&gt;
   &amp;lt;/diameter&amp;gt;&lt;br /&gt;
   &amp;lt;operation&amp;gt;&lt;br /&gt;
   &amp;lt;AuthenticationInfoAnswer appid=&amp;quot;16777251&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;SessionId&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
     &amp;lt;AuthSessionState&amp;gt;1&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
     &amp;lt;ExperimentalResult&amp;gt;&lt;br /&gt;
       &amp;lt;value vendor=&amp;quot;10415&amp;quot;&amp;gt;auth-data-unavailable&amp;lt;/value&amp;gt;&lt;br /&gt;
     &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
   &amp;lt;/AuthenticationInfoAnswer&amp;gt;&lt;br /&gt;
   &amp;lt;/operation&amp;gt;&lt;br /&gt;
  &amp;lt;/m&amp;gt;&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/Diameter_Transport</id>
		<title>Diameter Transport</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/Diameter_Transport"/>
				<updated>2016-09-12T08:48:50Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The transport part of the message contains parameters related to identifying a message and controlling the transmission of a Diameter message. For requests from application serves, these parameters are combined with parameters from the Diameter command to configure the handling and routing of the message.&lt;br /&gt;
&lt;br /&gt;
This part of the message is marked by the '''&amp;lt;diameter/&amp;gt;''' tag and contains information related to sending/receiving messages, but are not part of the Diameter command. &lt;br /&gt;
&lt;br /&gt;
These are the parameters for sending a message (bold means mandatory, italic - optional):&lt;br /&gt;
* '''trans_id''': Unique identifier per direction used to match requests and answers and identify a certain Diameter transaction. In Diameter -&amp;gt; TCP application direction, this is set by the YATE Diameter level and it must be returned in the answer sent by the TCP application. In the TCP application -&amp;gt; Diameter direction, the TCP application sets it in the request and the Diameter level will return in the answer. The identifier has no required format, must be only a uniquely generated string per Diameter transaction.&lt;br /&gt;
* '''local_node''': Identifier of the local node (${realm}/${host}) to use for sending a request from the TCP application.  If not present, one must be set in ''connection.'' configuration of the listener. The one present in XML will override the configured one. &lt;br /&gt;
* ''timeout'': setting the timeout for a request in the TCP application -&amp;gt; Diameter direction. This allows overriding the configured Diameter timeout setting (optional). It can also be set in ''connection.'' configuration or in diameter configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;m&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;lt;diameter&amp;gt;&lt;br /&gt;
     &amp;lt;timeout&amp;gt;60000&amp;lt;/timeout&amp;gt;&lt;br /&gt;
     &amp;lt;local_node&amp;gt;example.com/hss.example.com&amp;lt;/local_node&amp;gt;&lt;br /&gt;
     &amp;lt;trans_id&amp;gt;hss/123456&amp;lt;/trans_id&amp;gt;&lt;br /&gt;
   &amp;lt;/diameter&amp;gt;&lt;br /&gt;
   ....&lt;br /&gt;
 &amp;lt;/m&amp;gt;&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/Diameter_Connection</id>
		<title>Diameter Connection</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/Diameter_Connection"/>
				<updated>2016-09-12T08:30:44Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: /* Announcing capabilities */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The connection used for exchange of XML formatted messages is a TCP socket. As an option TLS can be used to protect the information. In that case the information on this page applies only to the unencrypted data, the certificate check and establishment of encryption are outside the scope of this page.&lt;br /&gt;
&lt;br /&gt;
==Establishing the connection==&lt;br /&gt;
&lt;br /&gt;
A connection is established from the application to the Diameter translator. Each translator is associated with a TCP listener. Each TCP listener is associated with a certain Diameter interface. An application can establish multiple connections to the Diameter translator. Each connection is independent from the others. To establish the connection a TCP socket must be connected to the agreed listening port of the translator. Upon a successful connection XML messages exchange can start.&lt;br /&gt;
&lt;br /&gt;
The XML declaration &amp;lt;?xml … ?&amp;gt; must be present in the first exchanged message. On further messages the declaration may be omitted.&lt;br /&gt;
&lt;br /&gt;
All messages must have a root &amp;lt;m&amp;gt; element. The optional xmlns attribute must be &amp;quot;http://yate.null.ro/xml/diameter/v1&amp;quot; (note that the URL doesn't point to a valid location).&lt;br /&gt;
&lt;br /&gt;
The closing tag &amp;lt;/m&amp;gt; can be used to look up for the end of XML in the stream.&lt;br /&gt;
&lt;br /&gt;
==Announcing capabilities==&lt;br /&gt;
&lt;br /&gt;
After connection on the TCP socket, the application will announce its capabilities. Otherwise, it will not be considered a valid connection for Diameter messages and it will be ignored.&lt;br /&gt;
&lt;br /&gt;
This initial XML message must have both an XML declaration and an xmlns in the root element indicating the correct version of the protocol is being spoken.&lt;br /&gt;
&lt;br /&gt;
Each supported capability will be announced in a &amp;lt;c&amp;gt; element placed in the root element.&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;m xmlns=&amp;quot;http://yate.null.ro/xml/diameter/v1&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;c&amp;gt;HSSMobility&amp;lt;/c&amp;gt;&lt;br /&gt;
     &amp;lt;c&amp;gt;MMEMobility&amp;lt;/c&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
 &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On success the translator will confirm and indicate the application is active (receives messages):&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;m xmlns=&amp;quot;http://yate.null.ro/xml/diameter/v1&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;state&amp;gt;active&amp;lt;/state&amp;gt;&lt;br /&gt;
 &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On failure the converter may return an error text and will close the socket after that. In case of XML error or xmlns mismatch no error is returned.&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;m xmlns=&amp;quot;http://yate.null.ro/xml/tcap/v1&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;state&amp;gt;inactive&amp;lt;/state&amp;gt;&lt;br /&gt;
     &amp;lt;error&amp;gt;Unsupported: Charging&amp;lt;/error&amp;gt;&lt;br /&gt;
 &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For S6a interface, the capabilities are organized by the entity that can handle the requests. Capability - operations associations are: &lt;br /&gt;
* HSSMobility : UpdateLocationRequest, UpdateLocationAnswer, PurgeUERequest, PurgeUEAnswer, NotifyRequest, NotifyAnswer&lt;br /&gt;
* MMEMobility :CancelLocationRequest, CancelLocationAnswer, InsertSubscriberDataRequest, InsertSubscriberDataAnswer, DeleteSubscriberDataRequest, DeleteSubscriberDataAnswer, ResetRequest, ResetAnswer&lt;br /&gt;
* HSSAuthentication : AuthenticationInfoRequest, AuthenticationInfoAnswer&lt;br /&gt;
&lt;br /&gt;
==Generating and processing Diameter messages==&lt;br /&gt;
&lt;br /&gt;
While in active state, the application will receive XML Diameter-specific formatted messages for handling. It can also send messages, either as an answer to a previous incoming request or to generate a new outbound request.&lt;br /&gt;
&lt;br /&gt;
==Preparing shutdown==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When an application wishes to stop processing it should indicate to the translator to stop delivering messages for new requests/sessions. Messages for currently running requests will still be delivered.&lt;br /&gt;
&lt;br /&gt;
This is done by indicating lack of all capabilities in an empty &amp;lt;c/&amp;gt; element:&lt;br /&gt;
 &amp;lt;m&amp;gt;&lt;br /&gt;
    &amp;lt;c/&amp;gt;&lt;br /&gt;
 &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The converter will not answer at once, instead it will continue to deliver messages for existing requests/sessions. Eventually these requests will dry up and the new state will be applied:&lt;br /&gt;
 &amp;lt;m&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;inactive&amp;lt;/state&amp;gt;&lt;br /&gt;
 &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point it is safe to close the socket.&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/S6a/Sad</id>
		<title>S6a/Sad</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/S6a/Sad"/>
				<updated>2016-09-09T14:44:08Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: Created page with &amp;quot;== General ==  This page shows as examples Diameter XMLs for the S6a/S6d interface (3GPP MME/SGSN to HSS interface)&amp;lt;br&amp;gt; Application id: 16777251&amp;lt;br&amp;gt; Vendor id: 10415  '''NOTES...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
&lt;br /&gt;
This page shows as examples Diameter XMLs for the S6a/S6d interface (3GPP MME/SGSN to HSS interface)&amp;lt;br&amp;gt;&lt;br /&gt;
Application id: 16777251&amp;lt;br&amp;gt;&lt;br /&gt;
Vendor id: 10415&lt;br /&gt;
&lt;br /&gt;
'''NOTES:''':&lt;br /&gt;
* The examples below are not consistent with MME/SGSN/HSS functionality. Their parameters are present here to be seen.&lt;br /&gt;
* In the following examples a ''${str}'' means its value must be reflected from received message. E.g. ''${hhident}'' must be set from received message ''hhident'' parameter.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Update Location Command ==&lt;br /&gt;
&lt;br /&gt;
Direction: MME/SGSN -&amp;gt; HSS&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;UpdateLocationRequest appid=&amp;quot;16777251&amp;quot; flags=&amp;quot;request,proxiable&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;DestinationRealm&amp;gt;example.com&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
   &amp;lt;Username&amp;gt;004100123456789&amp;lt;/Username&amp;gt;&lt;br /&gt;
   &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;value id=&amp;quot;1&amp;quot;&amp;gt;0x03&amp;lt;/value&amp;gt;&lt;br /&gt;
   &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
   &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;value id=&amp;quot;2&amp;quot;&amp;gt;sms-in-mme&amp;lt;/value&amp;gt;&lt;br /&gt;
   &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
   &amp;lt;TerminalInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;IMEI vendor=&amp;quot;10415&amp;quot;&amp;gt;1234567890&amp;lt;/IMEI&amp;gt;&lt;br /&gt;
   &amp;lt;/TerminalInfo&amp;gt;&lt;br /&gt;
   &amp;lt;RATType vendor=&amp;quot;10415&amp;quot;&amp;gt;e-utran&amp;lt;/RATType&amp;gt;&lt;br /&gt;
   &amp;lt;ULRFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;s6a&amp;lt;/ULRFlags&amp;gt;&lt;br /&gt;
   &amp;lt;UESRVCCCapability vendor=&amp;quot;10415&amp;quot;&amp;gt;yes&amp;lt;/UESRVCCCapability&amp;gt;&lt;br /&gt;
   &amp;lt;VisitedPlmnId vendor=&amp;quot;10415&amp;quot;&amp;gt;040100&amp;lt;/VisitedPlmnId&amp;gt;&lt;br /&gt;
   &amp;lt;SgsnNumber vendor=&amp;quot;10415&amp;quot;&amp;gt;123&amp;lt;/SgsnNumber&amp;gt;&lt;br /&gt;
   &amp;lt;HSoIMSVOPSS vendor=&amp;quot;10415&amp;quot;&amp;gt;yes&amp;lt;/HSoIMSVOPSS&amp;gt;&lt;br /&gt;
   &amp;lt;GMLCAddress vendor=&amp;quot;10415&amp;quot;&amp;gt;192.168.168.12&amp;lt;/GMLCAddress&amp;gt;&lt;br /&gt;
   &amp;lt;ActiveAPN vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;MIP6AgentInfo&amp;gt;&lt;br /&gt;
       &amp;lt;MIPHomeAgentAddress&amp;gt;fe80::2&amp;lt;/MIPHomeAgentAddress&amp;gt;&lt;br /&gt;
       &amp;lt;MIP6HomeLinkPrefix&amp;gt;001122&amp;lt;/MIP6HomeLinkPrefix&amp;gt;&lt;br /&gt;
     &amp;lt;/MIP6AgentInfo&amp;gt;&lt;br /&gt;
     &amp;lt;ContextIdentifier vendor=&amp;quot;10415&amp;quot;&amp;gt;100&amp;lt;/ContextIdentifier&amp;gt;&lt;br /&gt;
     &amp;lt;ServiceSelection&amp;gt;*&amp;lt;/ServiceSelection&amp;gt;&lt;br /&gt;
     &amp;lt;VisitedNetworkIdentifier vendor=&amp;quot;10415&amp;quot;&amp;gt;998877&amp;lt;/VisitedNetworkIdentifier&amp;gt;&lt;br /&gt;
     &amp;lt;SpecificAPNInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;MIP6AgentInfo&amp;gt;&lt;br /&gt;
         &amp;lt;MIPHomeAgentAddress&amp;gt;fe80::2&amp;lt;/MIPHomeAgentAddress&amp;gt;&lt;br /&gt;
         &amp;lt;MIP6HomeLinkPrefix&amp;gt;001122&amp;lt;/MIP6HomeLinkPrefix&amp;gt;&lt;br /&gt;
       &amp;lt;/MIP6AgentInfo&amp;gt;&lt;br /&gt;
       &amp;lt;ServiceSelection&amp;gt;*&amp;lt;/ServiceSelection&amp;gt;&lt;br /&gt;
       &amp;lt;VisitedNetworkIdentifier vendor=&amp;quot;10415&amp;quot;&amp;gt;001122&amp;lt;/VisitedNetworkIdentifier&amp;gt;&lt;br /&gt;
     &amp;lt;/SpecificAPNInfo&amp;gt;&lt;br /&gt;
   &amp;lt;/ActiveAPN&amp;gt;&lt;br /&gt;
   &amp;lt;EquivalentPlmnList vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;VisitedPlmnId vendor=&amp;quot;10415&amp;quot;&amp;gt;004001&amp;lt;/VisitedPlmnId&amp;gt;&lt;br /&gt;
     &amp;lt;VisitedPlmnId vendor=&amp;quot;10415&amp;quot;&amp;gt;004002&amp;lt;/VisitedPlmnId&amp;gt;&lt;br /&gt;
   &amp;lt;/EquivalentPlmnList&amp;gt;&lt;br /&gt;
   &amp;lt;MmeNumberForMTSms vendor=&amp;quot;10415&amp;quot;&amp;gt;1000&amp;lt;/MmeNumberForMTSms&amp;gt;&lt;br /&gt;
   &amp;lt;SMSRegisterRequest vendor=&amp;quot;10415&amp;quot;&amp;gt;no-preferrence&amp;lt;/SMSRegisterRequest&amp;gt;&lt;br /&gt;
 &amp;lt;/UpdateLocationRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Answer, success:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;UpdateLocationAnswer appid=&amp;quot;${appid}&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;SessionId&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
   &amp;lt;AuthSessionState&amp;gt;1&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
   &amp;lt;ULAFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;mme-reg-mt-sms,64&amp;lt;/ULAFlags&amp;gt;&lt;br /&gt;
   &amp;lt;ErrorDiagnostic vendor=&amp;quot;10415&amp;quot;&amp;gt;odb-all-apn&amp;lt;/ErrorDiagnostic&amp;gt;&lt;br /&gt;
   &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;value id=&amp;quot;1&amp;quot;&amp;gt;boic,baoc,regsub&amp;lt;/value&amp;gt;&lt;br /&gt;
   &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
   &amp;lt;SubscriptionData vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;SubscriberStatus vendor=&amp;quot;10415&amp;quot;&amp;gt;serviceGranted&amp;lt;/SubscriberStatus&amp;gt;&lt;br /&gt;
     &amp;lt;MSISDN vendor=&amp;quot;10415&amp;quot;&amp;gt;40700100100&amp;lt;/MSISDN&amp;gt;&lt;br /&gt;
     &amp;lt;AMSISDN vendor=&amp;quot;10415&amp;quot;&amp;gt;40700100101&amp;lt;/AMSISDN&amp;gt;&lt;br /&gt;
     &amp;lt;STNSR vendor=&amp;quot;10415&amp;quot;&amp;gt;40700100102&amp;lt;/STNSR&amp;gt;&lt;br /&gt;
     &amp;lt;ICSIndicator vendor=&amp;quot;10415&amp;quot;&amp;gt;yes&amp;lt;/ICSIndicator&amp;gt;&lt;br /&gt;
     &amp;lt;NetworkAccessMode vendor=&amp;quot;10415&amp;quot;&amp;gt;only-packet&amp;lt;/NetworkAccessMode&amp;gt;&lt;br /&gt;
     &amp;lt;OperatorDeterminedBarring vendor=&amp;quot;10415&amp;quot;&amp;gt;odb-all-apn,odb-intrn-og&amp;lt;/OperatorDeterminedBarring&amp;gt;&lt;br /&gt;
     &amp;lt;HPlmnODB vendor=&amp;quot;10415&amp;quot;&amp;gt;type1,type3&amp;lt;/HPlmnODB&amp;gt;&lt;br /&gt;
     &amp;lt;RegionalSubscriptionZoneCode vendor=&amp;quot;10415&amp;quot;&amp;gt;1122330101&amp;lt;/RegionalSubscriptionZoneCode&amp;gt;&lt;br /&gt;
     &amp;lt;RegionalSubscriptionZoneCode vendor=&amp;quot;10415&amp;quot;&amp;gt;1122330102&amp;lt;/RegionalSubscriptionZoneCode&amp;gt;&lt;br /&gt;
     &amp;lt;AccessRestrictionData vendor=&amp;quot;10415&amp;quot;&amp;gt;geran,gan,i-hspa-evolution,ho-to-non-3gpp&amp;lt;/AccessRestrictionData&amp;gt;&lt;br /&gt;
     &amp;lt;APNOIReplacement vendor=&amp;quot;10415&amp;quot;&amp;gt;apn.example.com&amp;lt;/APNOIReplacement&amp;gt;&lt;br /&gt;
     &amp;lt;LCSInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;GMLCNumber vendor=&amp;quot;10415&amp;quot;&amp;gt;40700100000&amp;lt;/GMLCNumber&amp;gt;&lt;br /&gt;
       &amp;lt;GMLCNumber vendor=&amp;quot;10415&amp;quot;&amp;gt;40700100001&amp;lt;/GMLCNumber&amp;gt;&lt;br /&gt;
       &amp;lt;LCSPrivacyException vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;SSCode vendor=&amp;quot;10415&amp;quot;&amp;gt;allLineIdentificationSS&amp;lt;/SSCode&amp;gt;&lt;br /&gt;
         &amp;lt;SSStatus vendor=&amp;quot;10415&amp;quot;&amp;gt;active,registered&amp;lt;/SSStatus&amp;gt;&lt;br /&gt;
         &amp;lt;NotificationToUEUser vendor=&amp;quot;10415&amp;quot;&amp;gt;locationNotAllowed&amp;lt;/NotificationToUEUser&amp;gt;&lt;br /&gt;
         &amp;lt;ExternalClient vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;ClientIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;40700200000&amp;lt;/ClientIdentity&amp;gt;&lt;br /&gt;
           &amp;lt;GMLCRestriction vendor=&amp;quot;10415&amp;quot;&amp;gt;home-Country&amp;lt;/GMLCRestriction&amp;gt;&lt;br /&gt;
           &amp;lt;NotificationToUEUser vendor=&amp;quot;10415&amp;quot;&amp;gt;notifyLocationAllowed&amp;lt;/NotificationToUEUser&amp;gt;&lt;br /&gt;
         &amp;lt;/ExternalClient&amp;gt;&lt;br /&gt;
         &amp;lt;ExternalClient vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;ClientIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;40700300000&amp;lt;/ClientIdentity&amp;gt;&lt;br /&gt;
         &amp;lt;/ExternalClient&amp;gt;&lt;br /&gt;
         &amp;lt;PlmnClient vendor=&amp;quot;10415&amp;quot;&amp;gt;anonymousLocation&amp;lt;/PlmnClient&amp;gt;&lt;br /&gt;
         &amp;lt;ServiceType vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;ServiceTypeIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;3&amp;lt;/ServiceTypeIdentity&amp;gt;&lt;br /&gt;
           &amp;lt;GMLCRestriction vendor=&amp;quot;10415&amp;quot;&amp;gt;home-Country&amp;lt;/GMLCRestriction&amp;gt;&lt;br /&gt;
           &amp;lt;NotificationToUEUser vendor=&amp;quot;10415&amp;quot;&amp;gt;notifyLocationAllowed&amp;lt;/NotificationToUEUser&amp;gt;&lt;br /&gt;
         &amp;lt;/ServiceType&amp;gt;&lt;br /&gt;
         &amp;lt;ServiceType vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;ServiceTypeIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;4&amp;lt;/ServiceTypeIdentity&amp;gt;&lt;br /&gt;
         &amp;lt;/ServiceType&amp;gt;&lt;br /&gt;
       &amp;lt;/LCSPrivacyException&amp;gt;&lt;br /&gt;
       &amp;lt;LCSPrivacyException vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;SSCode vendor=&amp;quot;10415&amp;quot;&amp;gt;allCallOfferingSS&amp;lt;/SSCode&amp;gt;&lt;br /&gt;
         &amp;lt;SSStatus vendor=&amp;quot;10415&amp;quot;&amp;gt;active,provisioned&amp;lt;/SSStatus&amp;gt;&lt;br /&gt;
         &amp;lt;PlmnClient vendor=&amp;quot;10415&amp;quot;&amp;gt;broadcastService&amp;lt;/PlmnClient&amp;gt;&lt;br /&gt;
       &amp;lt;/LCSPrivacyException&amp;gt;&lt;br /&gt;
       &amp;lt;MOLR vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;SSCode vendor=&amp;quot;10415&amp;quot;&amp;gt;allLineIdentificationSS&amp;lt;/SSCode&amp;gt;&lt;br /&gt;
         &amp;lt;SSStatus vendor=&amp;quot;10415&amp;quot;&amp;gt;active,registered&amp;lt;/SSStatus&amp;gt;&lt;br /&gt;
       &amp;lt;/MOLR&amp;gt;&lt;br /&gt;
     &amp;lt;/LCSInfo&amp;gt;&lt;br /&gt;
     &amp;lt;TeleserviceList vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;TSCode vendor=&amp;quot;10415&amp;quot;&amp;gt;allDataTeleservices&amp;lt;/TSCode&amp;gt;&lt;br /&gt;
       &amp;lt;TSCode vendor=&amp;quot;10415&amp;quot;&amp;gt;allSpeechTransmissionServices&amp;lt;/TSCode&amp;gt;&lt;br /&gt;
       &amp;lt;TSCode vendor=&amp;quot;10415&amp;quot;&amp;gt;voiceGroupCall&amp;lt;/TSCode&amp;gt;&lt;br /&gt;
     &amp;lt;/TeleserviceList&amp;gt;&lt;br /&gt;
     &amp;lt;CallBarringInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;SSCode vendor=&amp;quot;10415&amp;quot;&amp;gt;allLineIdentificationSS&amp;lt;/SSCode&amp;gt;&lt;br /&gt;
       &amp;lt;SSStatus vendor=&amp;quot;10415&amp;quot;&amp;gt;active,registered&amp;lt;/SSStatus&amp;gt;&lt;br /&gt;
     &amp;lt;/CallBarringInfo&amp;gt;&lt;br /&gt;
     &amp;lt;CallBarringInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;SSCode vendor=&amp;quot;10415&amp;quot;&amp;gt;allForwardingSS&amp;lt;/SSCode&amp;gt;&lt;br /&gt;
       &amp;lt;SSStatus vendor=&amp;quot;10415&amp;quot;&amp;gt;registered&amp;lt;/SSStatus&amp;gt;&lt;br /&gt;
     &amp;lt;/CallBarringInfo&amp;gt;&lt;br /&gt;
     &amp;lt;ChargingCharacteristics vendor=&amp;quot;10415&amp;quot;&amp;gt;xbcd&amp;lt;/ChargingCharacteristics&amp;gt;&lt;br /&gt;
     &amp;lt;AMBR vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;MaxRequestedBandwithUL vendor=&amp;quot;10415&amp;quot;&amp;gt;20000&amp;lt;/MaxRequestedBandwithUL&amp;gt;&lt;br /&gt;
       &amp;lt;MaxRequestedBandwithDL vendor=&amp;quot;10415&amp;quot;&amp;gt;19000&amp;lt;/MaxRequestedBandwithDL&amp;gt;&lt;br /&gt;
     &amp;lt;/AMBR&amp;gt;&lt;br /&gt;
     &amp;lt;APNConfigurationProfile vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;ContextIdentifier vendor=&amp;quot;10415&amp;quot;&amp;gt;1&amp;lt;/ContextIdentifier&amp;gt;&lt;br /&gt;
       &amp;lt;AllAPNConfigIncluded vendor=&amp;quot;10415&amp;quot;&amp;gt;yes&amp;lt;/AllAPNConfigIncluded&amp;gt;&lt;br /&gt;
       &amp;lt;APNConfiguration vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;ContextIdentifier vendor=&amp;quot;10415&amp;quot;&amp;gt;555&amp;lt;/ContextIdentifier&amp;gt;&lt;br /&gt;
         &amp;lt;ServedPartyIPAddr vendor=&amp;quot;10415&amp;quot;&amp;gt;1.2.3.4&amp;lt;/ServedPartyIPAddr&amp;gt;&lt;br /&gt;
         &amp;lt;ServedPartyIPAddr vendor=&amp;quot;10415&amp;quot;&amp;gt;fe80::12:4&amp;lt;/ServedPartyIPAddr&amp;gt;&lt;br /&gt;
         &amp;lt;PDNType vendor=&amp;quot;10415&amp;quot;&amp;gt;ipv4v6&amp;lt;/PDNType&amp;gt;&lt;br /&gt;
         &amp;lt;ServiceSelection&amp;gt;*&amp;lt;/ServiceSelection&amp;gt;&lt;br /&gt;
         &amp;lt;EpsSubscribedQosProfile vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;QosClassIdentifier vendor=&amp;quot;10415&amp;quot;&amp;gt;5&amp;lt;/QosClassIdentifier&amp;gt;&lt;br /&gt;
            &amp;lt;AllocationRetentionPriority vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;PriorityLevel vendor=&amp;quot;10415&amp;quot;&amp;gt;2&amp;lt;/PriorityLevel&amp;gt;&lt;br /&gt;
              &amp;lt;PreemptionCapability vendor=&amp;quot;10415&amp;quot;&amp;gt;yes&amp;lt;/PreemptionCapability&amp;gt;&lt;br /&gt;
              &amp;lt;PreemptionVulnerability vendor=&amp;quot;10415&amp;quot;&amp;gt;no&amp;lt;/PreemptionVulnerability&amp;gt;&lt;br /&gt;
            &amp;lt;/AllocationRetentionPriority&amp;gt;&lt;br /&gt;
         &amp;lt;/EpsSubscribedQosProfile&amp;gt;&lt;br /&gt;
         &amp;lt;VPlmnDynamicAddrAllowed vendor=&amp;quot;10415&amp;quot;&amp;gt;yes&amp;lt;/VPlmnDynamicAddrAllowed&amp;gt;&lt;br /&gt;
         &amp;lt;MIP6AgentInfo&amp;gt;&lt;br /&gt;
           &amp;lt;MIPHomeAgentAddress&amp;gt;fe80::ad&amp;lt;/MIPHomeAgentAddress&amp;gt;&lt;br /&gt;
         &amp;lt;/MIP6AgentInfo&amp;gt;&lt;br /&gt;
         &amp;lt;VisitedNetworkIdentifier vendor=&amp;quot;10415&amp;quot;&amp;gt;1234567890&amp;lt;/VisitedNetworkIdentifier&amp;gt;&lt;br /&gt;
         &amp;lt;PDNGWAllocationType vendor=&amp;quot;10415&amp;quot;&amp;gt;static&amp;lt;/PDNGWAllocationType&amp;gt;&lt;br /&gt;
         &amp;lt;ChargingCharacteristics vendor=&amp;quot;10415&amp;quot;&amp;gt;gigi&amp;lt;/ChargingCharacteristics&amp;gt;&lt;br /&gt;
         &amp;lt;AMBR vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;MaxRequestedBandwithUL vendor=&amp;quot;10415&amp;quot;&amp;gt;550000&amp;lt;/MaxRequestedBandwithUL&amp;gt;&lt;br /&gt;
           &amp;lt;MaxRequestedBandwithDL vendor=&amp;quot;10415&amp;quot;&amp;gt;519000&amp;lt;/MaxRequestedBandwithDL&amp;gt;&lt;br /&gt;
         &amp;lt;/AMBR&amp;gt;&lt;br /&gt;
         &amp;lt;SIPTOPermission vendor=&amp;quot;10415&amp;quot;&amp;gt;yes&amp;lt;/SIPTOPermission&amp;gt;&lt;br /&gt;
         &amp;lt;LIPAPermission vendor=&amp;quot;10415&amp;quot;&amp;gt;lipa-only&amp;lt;/LIPAPermission&amp;gt;&lt;br /&gt;
         &amp;lt;RestorationPriority vendor=&amp;quot;10415&amp;quot;&amp;gt;3&amp;lt;/RestorationPriority&amp;gt;&lt;br /&gt;
       &amp;lt;/APNConfiguration&amp;gt;&lt;br /&gt;
     &amp;lt;/APNConfigurationProfile&amp;gt;&lt;br /&gt;
     &amp;lt;RATFreqSelPriorityID vendor=&amp;quot;10415&amp;quot;&amp;gt;5&amp;lt;/RATFreqSelPriorityID&amp;gt;&lt;br /&gt;
     &amp;lt;TraceData vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;TraceReference vendor=&amp;quot;10415&amp;quot;&amp;gt;004011998877&amp;lt;/TraceReference&amp;gt;&lt;br /&gt;
       &amp;lt;TraceDepth vendor=&amp;quot;10415&amp;quot;&amp;gt;medium&amp;lt;/TraceDepth&amp;gt;&lt;br /&gt;
       &amp;lt;TraceNEList vendor=&amp;quot;10415&amp;quot;&amp;gt;eNB,sgw&amp;lt;/TraceNEList&amp;gt;&lt;br /&gt;
       &amp;lt;TraceInterfaceList vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;mme&amp;gt;s13,s1-mme&amp;lt;/mme&amp;gt;&lt;br /&gt;
         &amp;lt;eir&amp;gt;s13&amp;lt;/eir&amp;gt;&lt;br /&gt;
       &amp;lt;/TraceInterfaceList&amp;gt;&lt;br /&gt;
       &amp;lt;TraceEventList vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;sgw&amp;gt;pdn-connectionCreation&amp;lt;/sgw&amp;gt;&lt;br /&gt;
         &amp;lt;pgw&amp;gt;pdn-connectionTermination&amp;lt;/pgw&amp;gt;&lt;br /&gt;
         &amp;lt;mme&amp;gt;handover&amp;lt;/mme&amp;gt;&lt;br /&gt;
       &amp;lt;/TraceEventList&amp;gt;&lt;br /&gt;
       &amp;lt;OMCId vendor=&amp;quot;10415&amp;quot;&amp;gt;001122&amp;lt;/OMCId&amp;gt;&lt;br /&gt;
       &amp;lt;TraceCollectionEntity vendor=&amp;quot;10415&amp;quot;&amp;gt;192.168.168.1&amp;lt;/TraceCollectionEntity&amp;gt;&lt;br /&gt;
       &amp;lt;MDTConfiguration vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;JobType vendor=&amp;quot;10415&amp;quot;&amp;gt;rlf-reports-only&amp;lt;/JobType&amp;gt;&lt;br /&gt;
         &amp;lt;AreaScope vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;CellGlobalIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;PlmnIdentity&amp;gt;12345&amp;lt;/PlmnIdentity&amp;gt;&lt;br /&gt;
             &amp;lt;LAC&amp;gt;1122&amp;lt;/LAC&amp;gt;&lt;br /&gt;
             &amp;lt;CI&amp;gt;123&amp;lt;/CI&amp;gt;&lt;br /&gt;
           &amp;lt;/CellGlobalIdentity&amp;gt;&lt;br /&gt;
           &amp;lt;EutranCellGlobalIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;PlmnIdentity&amp;gt;123456&amp;lt;/PlmnIdentity&amp;gt;&lt;br /&gt;
             &amp;lt;CellIdentity&amp;gt;1234567&amp;lt;/CellIdentity&amp;gt;&lt;br /&gt;
           &amp;lt;/EutranCellGlobalIdentity&amp;gt;&lt;br /&gt;
           &amp;lt;RAI vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;PlmnIdentity&amp;gt;12345&amp;lt;/PlmnIdentity&amp;gt;&lt;br /&gt;
             &amp;lt;LAC&amp;gt;1122&amp;lt;/LAC&amp;gt;&lt;br /&gt;
             &amp;lt;RAC&amp;gt;99&amp;lt;/RAC&amp;gt;&lt;br /&gt;
           &amp;lt;/RAI&amp;gt;&lt;br /&gt;
           &amp;lt;LAI vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;PlmnIdentity&amp;gt;123456&amp;lt;/PlmnIdentity&amp;gt;&lt;br /&gt;
             &amp;lt;LAC&amp;gt;1122&amp;lt;/LAC&amp;gt;&lt;br /&gt;
           &amp;lt;/LAI&amp;gt;&lt;br /&gt;
           &amp;lt;TAI vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;PlmnIdentity&amp;gt;123456&amp;lt;/PlmnIdentity&amp;gt;&lt;br /&gt;
             &amp;lt;TAC&amp;gt;1122&amp;lt;/TAC&amp;gt;&lt;br /&gt;
           &amp;lt;/TAI&amp;gt;&lt;br /&gt;
         &amp;lt;/AreaScope&amp;gt;&lt;br /&gt;
         &amp;lt;ListOfMeasurements vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;lte&amp;gt;m2&amp;lt;/lte&amp;gt;&lt;br /&gt;
           &amp;lt;umts&amp;gt;m7-for-ul,m3&amp;lt;/umts&amp;gt;&lt;br /&gt;
         &amp;lt;/ListOfMeasurements&amp;gt;&lt;br /&gt;
         &amp;lt;ReportingTrigger vendor=&amp;quot;10415&amp;quot;&amp;gt;periodical&amp;lt;/ReportingTrigger&amp;gt;&lt;br /&gt;
         &amp;lt;ReportInterval vendor=&amp;quot;10415&amp;quot;&amp;gt;6&amp;lt;/ReportInterval&amp;gt;&lt;br /&gt;
         &amp;lt;ReportAmount vendor=&amp;quot;10415&amp;quot;&amp;gt;7&amp;lt;/ReportAmount&amp;gt;&lt;br /&gt;
         &amp;lt;ThresholdRSRP vendor=&amp;quot;10415&amp;quot;&amp;gt;10&amp;lt;/ThresholdRSRP&amp;gt;&lt;br /&gt;
         &amp;lt;ThresholdRSRQ vendor=&amp;quot;10415&amp;quot;&amp;gt;10&amp;lt;/ThresholdRSRQ&amp;gt;&lt;br /&gt;
         &amp;lt;LoggingInterval vendor=&amp;quot;10415&amp;quot;&amp;gt;7&amp;lt;/LoggingInterval&amp;gt;&lt;br /&gt;
         &amp;lt;LoggingDuration vendor=&amp;quot;10415&amp;quot;&amp;gt;5&amp;lt;/LoggingDuration&amp;gt;&lt;br /&gt;
         &amp;lt;MeasurementPeriodUMTS vendor=&amp;quot;10415&amp;quot;&amp;gt;13&amp;lt;/MeasurementPeriodUMTS&amp;gt;&lt;br /&gt;
         &amp;lt;MeasurementPeriodLTE vendor=&amp;quot;10415&amp;quot;&amp;gt;6&amp;lt;/MeasurementPeriodLTE&amp;gt;&lt;br /&gt;
         &amp;lt;CollectionPeriodRrmLTE vendor=&amp;quot;10415&amp;quot;&amp;gt;5&amp;lt;/CollectionPeriodRrmLTE&amp;gt;&lt;br /&gt;
         &amp;lt;CollectionPeriodRrmUMTS vendor=&amp;quot;10415&amp;quot;&amp;gt;5&amp;lt;/CollectionPeriodRrmUMTS&amp;gt;&lt;br /&gt;
         &amp;lt;PositioningMethod vendor=&amp;quot;10415&amp;quot;&amp;gt;gnss,e-cell-id&amp;lt;/PositioningMethod&amp;gt;&lt;br /&gt;
         &amp;lt;MeasurementQuantity vendor=&amp;quot;10415&amp;quot;&amp;gt;pathloss&amp;lt;/MeasurementQuantity&amp;gt;&lt;br /&gt;
         &amp;lt;EventThreshold1F vendor=&amp;quot;10415&amp;quot;&amp;gt;0&amp;lt;/EventThreshold1F&amp;gt;&lt;br /&gt;
         &amp;lt;EventThreshold1I vendor=&amp;quot;10415&amp;quot;&amp;gt;-5&amp;lt;/EventThreshold1I&amp;gt;&lt;br /&gt;
       &amp;lt;/MDTConfiguration&amp;gt;&lt;br /&gt;
     &amp;lt;/TraceData&amp;gt;&lt;br /&gt;
     &amp;lt;GPRSSubscriptionData vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;CompleteDataList vendor=&amp;quot;10415&amp;quot;&amp;gt;yes&amp;lt;/CompleteDataList&amp;gt;&lt;br /&gt;
       &amp;lt;PDPContext vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;ContextIdentifier vendor=&amp;quot;10415&amp;quot;&amp;gt;99&amp;lt;/ContextIdentifier&amp;gt;&lt;br /&gt;
         &amp;lt;PDPType vendor=&amp;quot;10415&amp;quot;&amp;gt;11223344&amp;lt;/PDPType&amp;gt;&lt;br /&gt;
         &amp;lt;PDPAddress vendor=&amp;quot;10415&amp;quot;&amp;gt;1.2.3.4&amp;lt;/PDPAddress&amp;gt;&lt;br /&gt;
         &amp;lt;QosSubscribed vendor=&amp;quot;10415&amp;quot;&amp;gt;998877&amp;lt;/QosSubscribed&amp;gt;&lt;br /&gt;
         &amp;lt;ServiceSelection&amp;gt;*.example.com&amp;lt;/ServiceSelection&amp;gt;&lt;br /&gt;
         &amp;lt;ExtPDPType vendor=&amp;quot;10415&amp;quot;&amp;gt;11223355&amp;lt;/ExtPDPType&amp;gt;&lt;br /&gt;
         &amp;lt;ExtPDPAddress vendor=&amp;quot;10415&amp;quot;&amp;gt;1.2.3.5&amp;lt;/ExtPDPAddress&amp;gt;&lt;br /&gt;
       &amp;lt;/PDPContext&amp;gt;&lt;br /&gt;
       &amp;lt;PDPContext vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;ContextIdentifier vendor=&amp;quot;10415&amp;quot;&amp;gt;100&amp;lt;/ContextIdentifier&amp;gt;&lt;br /&gt;
         &amp;lt;PDPType vendor=&amp;quot;10415&amp;quot;&amp;gt;11223366&amp;lt;/PDPType&amp;gt;&lt;br /&gt;
         &amp;lt;QosSubscribed vendor=&amp;quot;10415&amp;quot;&amp;gt;998866&amp;lt;/QosSubscribed&amp;gt;&lt;br /&gt;
         &amp;lt;ServiceSelection&amp;gt;*.example.com&amp;lt;/ServiceSelection&amp;gt;&lt;br /&gt;
       &amp;lt;/PDPContext&amp;gt;&lt;br /&gt;
     &amp;lt;/GPRSSubscriptionData&amp;gt;&lt;br /&gt;
     &amp;lt;CsgSubscriptionData vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;CsgId vendor=&amp;quot;10415&amp;quot;&amp;gt;345&amp;lt;/CsgId&amp;gt;&lt;br /&gt;
       &amp;lt;ExpirationDate vendor=&amp;quot;10415&amp;quot;&amp;gt;1234567890&amp;lt;/ExpirationDate&amp;gt;&lt;br /&gt;
       &amp;lt;ServiceSelection&amp;gt;*&amp;lt;/ServiceSelection&amp;gt;&lt;br /&gt;
       &amp;lt;VisitedPlmnId vendor=&amp;quot;10415&amp;quot;&amp;gt;045500&amp;lt;/VisitedPlmnId&amp;gt;&lt;br /&gt;
     &amp;lt;/CsgSubscriptionData&amp;gt;&lt;br /&gt;
     &amp;lt;RoamingRestrictUnsuppFeature vendor=&amp;quot;10415&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;SubscribedPeriodicRAUTAUTimer vendor=&amp;quot;10415&amp;quot;&amp;gt;120&amp;lt;/SubscribedPeriodicRAUTAUTimer&amp;gt;&lt;br /&gt;
     &amp;lt;MPSPriority vendor=&amp;quot;10415&amp;quot;&amp;gt;cs,eps&amp;lt;/MPSPriority&amp;gt;&lt;br /&gt;
     &amp;lt;VPlmnLIPAAllowed vendor=&amp;quot;10415&amp;quot;&amp;gt;yes&amp;lt;/VPlmnLIPAAllowed&amp;gt;&lt;br /&gt;
     &amp;lt;RelayNodeIndicator vendor=&amp;quot;10415&amp;quot;&amp;gt;no&amp;lt;/RelayNodeIndicator&amp;gt;&lt;br /&gt;
     &amp;lt;MDTUserConsent vendor=&amp;quot;10415&amp;quot;&amp;gt;yes&amp;lt;/MDTUserConsent&amp;gt;&lt;br /&gt;
     &amp;lt;SubscribedVSRVCC vendor=&amp;quot;10415&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;SubscriptionDataFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;ps-and-sms-only,sms-in-sgsn&amp;lt;/SubscriptionDataFlags&amp;gt;&lt;br /&gt;
   &amp;lt;/SubscriptionData&amp;gt;&lt;br /&gt;
 &amp;lt;/UpdateLocationAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Answer, failure, unknown subscriber:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;UpdateLocationAnswer appid=&amp;quot;16777251&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot; flags=&amp;quot;proxiable&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;SessionId&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
   &amp;lt;AuthSessionState&amp;gt;1&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
   &amp;lt;ExperimentalResult&amp;gt;&lt;br /&gt;
     &amp;lt;value vendor=&amp;quot;10415&amp;quot;&amp;gt;user-unknown&amp;lt;/value&amp;gt;&lt;br /&gt;
   &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
 &amp;lt;/UpdateLocationAnswer&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Cancel Location Command ==&lt;br /&gt;
&lt;br /&gt;
Direction: HSS -&amp;gt; MME/SGSN&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;CancelLocationRequest appid=&amp;quot;16777251&amp;quot; flags=&amp;quot;request,proxiable&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;DestinationHost&amp;gt;mme.example.com&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
   &amp;lt;DestinationRealm&amp;gt;example.com&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
   &amp;lt;Username&amp;gt;004100123456789&amp;lt;/Username&amp;gt;&lt;br /&gt;
   &amp;lt;CancellationType vendor=&amp;quot;10415&amp;quot;&amp;gt;subscription-withdrawal&amp;lt;/CancellationType&amp;gt;&lt;br /&gt;
   &amp;lt;CLRFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;s6a&amp;lt;/CLRFlags&amp;gt;&lt;br /&gt;
 &amp;lt;/CancelLocationRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Answer:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;CancelLocationAnswer appid=&amp;quot;16777251&amp;quot; flags=&amp;quot;proxiable&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;SessionId&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
   &amp;lt;AuthSessionState&amp;gt;1&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
 &amp;lt;/CancelLocationAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Insert Subscriber Data Command ==&lt;br /&gt;
&lt;br /&gt;
Direction: HSS -&amp;gt; MME/SGSN&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;InsertSubscriberDataRequest appid=&amp;quot;16777251&amp;quot; flags=&amp;quot;request,proxiable&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;DestinationHost&amp;gt;mme.example.com&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
   &amp;lt;DestinationRealm&amp;gt;example.com&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
   &amp;lt;Username&amp;gt;004100123456789&amp;lt;/Username&amp;gt;&lt;br /&gt;
   &amp;lt;SubscriptionData vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;MSISDN vendor=&amp;quot;10415&amp;quot;&amp;gt;40700100100&amp;lt;/MSISDN&amp;gt;&lt;br /&gt;
   &amp;lt;/SubscriptionData&amp;gt;&lt;br /&gt;
   &amp;lt;IDRFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;eps-user-state-req,eps-loc-info-req,local-tz-req,rat-type-req&amp;lt;/IDRFlags&amp;gt;&lt;br /&gt;
 &amp;lt;/InsertSubscriberDataRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Answer:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;InsertSubscriberDataAnswer appid=&amp;quot;16777251&amp;quot; flags=&amp;quot;proxiable&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;SessionId&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
   &amp;lt;AuthSessionState&amp;gt;1&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
   &amp;lt;IMSVOPSSS vendor=&amp;quot;10415&amp;quot;&amp;gt;yes&amp;lt;/IMSVOPSSS&amp;gt;&lt;br /&gt;
   &amp;lt;LastUEActivityTime vendor=&amp;quot;10415&amp;quot;&amp;gt;12345678&amp;lt;/LastUEActivityTime&amp;gt;&lt;br /&gt;
   &amp;lt;RATType vendor=&amp;quot;10415&amp;quot;&amp;gt;e-utran&amp;lt;/RATType&amp;gt;&lt;br /&gt;
   &amp;lt;IDAFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;network-node-area-restricted&amp;lt;/IDAFlags&amp;gt;&lt;br /&gt;
   &amp;lt;EpsUserState vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;MmeUserState vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;UserState vendor=&amp;quot;10415&amp;quot;&amp;gt;attached-reachable-for-paging&amp;lt;/UserState&amp;gt;&lt;br /&gt;
     &amp;lt;/MmeUserState&amp;gt;&lt;br /&gt;
   &amp;lt;/EpsUserState&amp;gt;&lt;br /&gt;
   &amp;lt;EpsLocationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;MmeLocationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;EutranCellGlobalIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;PlmnIdentity&amp;gt;123456&amp;lt;/PlmnIdentity&amp;gt;&lt;br /&gt;
         &amp;lt;CellIdentity&amp;gt;1234567&amp;lt;/CellIdentity&amp;gt;&lt;br /&gt;
       &amp;lt;/EutranCellGlobalIdentity&amp;gt;&lt;br /&gt;
       &amp;lt;GeographicalInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;0001020304050607&amp;lt;/GeographicalInfo&amp;gt;&lt;br /&gt;
       &amp;lt;GeodeticInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;00010203040506070809&amp;lt;/GeodeticInfo&amp;gt;&lt;br /&gt;
       &amp;lt;CurrentLocationRetrieved vendor=&amp;quot;10415&amp;quot;&amp;gt;active-loc-retrieval&amp;lt;/CurrentLocationRetrieved&amp;gt;&lt;br /&gt;
       &amp;lt;AgeOfLocationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;7&amp;lt;/AgeOfLocationInfo&amp;gt;&lt;br /&gt;
       &amp;lt;UserCsgInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;CsgId vendor=&amp;quot;10415&amp;quot;&amp;gt;345&amp;lt;/CsgId&amp;gt;&lt;br /&gt;
         &amp;lt;CsgAccessMode vendor=&amp;quot;10415&amp;quot;&amp;gt;closed&amp;lt;/CsgAccessMode&amp;gt;&lt;br /&gt;
         &amp;lt;CsgMembershipInd vendor=&amp;quot;10415&amp;quot;&amp;gt;yes&amp;lt;/CsgMembershipInd&amp;gt;&lt;br /&gt;
       &amp;lt;/UserCsgInfo&amp;gt;&lt;br /&gt;
     &amp;lt;/MmeLocationInfo&amp;gt;&lt;br /&gt;
     &amp;lt;SgsnLocationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;SAI vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;PlmnIdentity&amp;gt;12345&amp;lt;/PlmnIdentity&amp;gt;&lt;br /&gt;
         &amp;lt;LAC&amp;gt;1122&amp;lt;/LAC&amp;gt;&lt;br /&gt;
         &amp;lt;SAC&amp;gt;99&amp;lt;/SAC&amp;gt;&lt;br /&gt;
       &amp;lt;/SAI&amp;gt;&lt;br /&gt;
     &amp;lt;/SgsnLocationInfo&amp;gt;&lt;br /&gt;
   &amp;lt;/EpsLocationInfo&amp;gt;&lt;br /&gt;
   &amp;lt;LocalTimeZone vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;TimeZone vendor=&amp;quot;10415&amp;quot;&amp;gt;+2&amp;lt;/TimeZone&amp;gt;&lt;br /&gt;
     &amp;lt;DaylightSavingTime vendor=&amp;quot;10415&amp;quot;&amp;gt;1&amp;lt;/DaylightSavingTime&amp;gt;&lt;br /&gt;
   &amp;lt;/LocalTimeZone&amp;gt;&lt;br /&gt;
   &amp;lt;IDAFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;network-node-area-restricted&amp;lt;/IDAFlags&amp;gt;&lt;br /&gt;
 &amp;lt;/InsertSubscriberDataAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Delete Subscriber Data Command ==&lt;br /&gt;
&lt;br /&gt;
Direction: HSS -&amp;gt; MME/SGSN&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;DeleteSubscriberDataRequest appid=&amp;quot;16777251&amp;quot; flags=&amp;quot;request,proxiable&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;DestinationHost&amp;gt;mme.example.com&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
   &amp;lt;DestinationRealm&amp;gt;example.com&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
   &amp;lt;Username&amp;gt;004100123456789&amp;lt;/Username&amp;gt;&lt;br /&gt;
   &amp;lt;DSRFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;sms-withdrawal,trace-data-withdrawal&amp;lt;/DSRFlags&amp;gt;&lt;br /&gt;
   &amp;lt;TraceReference vendor=&amp;quot;10415&amp;quot;&amp;gt;004011998877&amp;lt;/TraceReference&amp;gt;&lt;br /&gt;
   &amp;lt;TSCode vendor=&amp;quot;10415&amp;quot;&amp;gt;allDataTeleservices&amp;lt;/TSCode&amp;gt;&lt;br /&gt;
   &amp;lt;TSCode vendor=&amp;quot;10415&amp;quot;&amp;gt;allSpeechTransmissionServices&amp;lt;/TSCode&amp;gt;&lt;br /&gt;
   &amp;lt;SSCode vendor=&amp;quot;10415&amp;quot;&amp;gt;allLineIdentificationSS&amp;lt;/SSCode&amp;gt;&lt;br /&gt;
   &amp;lt;SSCode vendor=&amp;quot;10415&amp;quot;&amp;gt;allCallOfferingSS&amp;lt;/SSCode&amp;gt;&lt;br /&gt;
 &amp;lt;/DeleteSubscriberDataRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Answer:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;DeleteSubscriberDataAnswer appid=&amp;quot;16777251&amp;quot; flags=&amp;quot;proxiable&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;SessionId&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
   &amp;lt;AuthSessionState&amp;gt;1&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
   &amp;lt;DSAFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;network-node-area-restricted&amp;lt;/DSAFlags&amp;gt;&lt;br /&gt;
 &amp;lt;/DeleteSubscriberDataAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Authentication Info Command ==&lt;br /&gt;
&lt;br /&gt;
Direction: MME/SGSN -&amp;gt; HSS&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Request:&lt;br /&gt;
 &amp;lt;AuthenticationInfoRequest appid=&amp;quot;16777251&amp;quot; flags=&amp;quot;request,proxiable&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;DestinationRealm&amp;gt;example.com&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
   &amp;lt;Username&amp;gt;004100123456789&amp;lt;/Username&amp;gt;&lt;br /&gt;
   &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;value id=&amp;quot;2&amp;quot;&amp;gt;sms-in-mme&amp;lt;/value&amp;gt;&lt;br /&gt;
   &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
   &amp;lt;RequestedEutranAuthInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;NumberOfRequestedVectors vendor=&amp;quot;10415&amp;quot;&amp;gt;5&amp;lt;/NumberOfRequestedVectors&amp;gt;&lt;br /&gt;
     &amp;lt;ImmediateResponsePreferred vendor=&amp;quot;10415&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;ReSynchronisationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;001122&amp;lt;/ReSynchronisationInfo&amp;gt;&lt;br /&gt;
   &amp;lt;/RequestedEutranAuthInfo&amp;gt;&lt;br /&gt;
   &amp;lt;RequestedUtranGeranAuthInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;NumberOfRequestedVectors vendor=&amp;quot;10415&amp;quot;&amp;gt;3&amp;lt;/NumberOfRequestedVectors&amp;gt;&lt;br /&gt;
     &amp;lt;ReSynchronisationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;001122&amp;lt;/ReSynchronisationInfo&amp;gt;&lt;br /&gt;
   &amp;lt;/RequestedUtranGeranAuthInfo&amp;gt;&lt;br /&gt;
   &amp;lt;VisitedPlmnId vendor=&amp;quot;10415&amp;quot;&amp;gt;040100&amp;lt;/VisitedPlmnId&amp;gt;&lt;br /&gt;
 &amp;lt;/AuthenticationInfoRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Answer, success:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;AuthenticationInfoAnswer appid=&amp;quot;16777251&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot; flags=&amp;quot;proxiable&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;SessionId&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
   &amp;lt;AuthSessionState&amp;gt;1&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
   &amp;lt;VendorSpecificApplicationId flags=&amp;quot;mandatory&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;value vendor=&amp;quot;10415&amp;quot; auth=&amp;quot;true&amp;quot;&amp;gt;16777251&amp;lt;/value&amp;gt;&lt;br /&gt;
   &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
   &amp;lt;ResultCode flags=&amp;quot;mandatory&amp;quot;&amp;gt;2001&amp;lt;/ResultCode&amp;gt;&lt;br /&gt;
   &amp;lt;ErrorDiagnostic flags=&amp;quot;vendor&amp;quot; vendor=&amp;quot;10415&amp;quot;&amp;gt;odb-HPLMN-APN&amp;lt;/ErrorDiagnostic&amp;gt;&lt;br /&gt;
   &amp;lt;SupportedFeatures flags=&amp;quot;vendor&amp;quot; vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;baoc,boic&amp;lt;/value&amp;gt;&lt;br /&gt;
   &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
   &amp;lt;AuthenticationInfo flags=&amp;quot;vendor,mandatory&amp;quot; vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;EutranVector flags=&amp;quot;vendor,mandatory&amp;quot; vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;ItemNumber flags=&amp;quot;vendor,mandatory&amp;quot; vendor=&amp;quot;10415&amp;quot;&amp;gt;1&amp;lt;/ItemNumber&amp;gt;&lt;br /&gt;
       &amp;lt;RAND flags=&amp;quot;vendor,mandatory&amp;quot; vendor=&amp;quot;10415&amp;quot;&amp;gt;01020304111213142122232441424344&amp;lt;/RAND&amp;gt;&lt;br /&gt;
       &amp;lt;XRES flags=&amp;quot;vendor,mandatory&amp;quot; vendor=&amp;quot;10415&amp;quot;&amp;gt;12345678&amp;lt;/XRES&amp;gt;&lt;br /&gt;
       &amp;lt;AUTN flags=&amp;quot;vendor,mandatory&amp;quot; vendor=&amp;quot;10415&amp;quot;&amp;gt;12345678&amp;lt;/AUTN&amp;gt;&lt;br /&gt;
       &amp;lt;KASME flags=&amp;quot;vendor,mandatory&amp;quot; vendor=&amp;quot;10415&amp;quot;&amp;gt;12345678&amp;lt;/KASME&amp;gt;&lt;br /&gt;
     &amp;lt;/EutranVector&amp;gt;&lt;br /&gt;
     &amp;lt;EutranVector flags=&amp;quot;vendor,mandatory&amp;quot; vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;ItemNumber flags=&amp;quot;vendor,mandatory&amp;quot; vendor=&amp;quot;10415&amp;quot;&amp;gt;2&amp;lt;/ItemNumber&amp;gt;&lt;br /&gt;
       &amp;lt;RAND flags=&amp;quot;vendor,mandatory&amp;quot; vendor=&amp;quot;10415&amp;quot;&amp;gt;01020304111213142122232441424344&amp;lt;/RAND&amp;gt;&lt;br /&gt;
       &amp;lt;XRES flags=&amp;quot;vendor,mandatory&amp;quot; vendor=&amp;quot;10415&amp;quot;&amp;gt;00345678&amp;lt;/XRES&amp;gt;&lt;br /&gt;
       &amp;lt;AUTN flags=&amp;quot;vendor,mandatory&amp;quot; vendor=&amp;quot;10415&amp;quot;&amp;gt;00345678&amp;lt;/AUTN&amp;gt;&lt;br /&gt;
       &amp;lt;KASME flags=&amp;quot;vendor,mandatory&amp;quot; vendor=&amp;quot;10415&amp;quot;&amp;gt;00345678&amp;lt;/KASME&amp;gt;&lt;br /&gt;
     &amp;lt;/EutranVector&amp;gt;&lt;br /&gt;
     &amp;lt;UtranVector flags=&amp;quot;vendor,mandatory&amp;quot; vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;RAND flags=&amp;quot;vendor,mandatory&amp;quot; vendor=&amp;quot;10415&amp;quot;&amp;gt;01020304111213142122232441424344&amp;lt;/RAND&amp;gt;&lt;br /&gt;
       &amp;lt;XRES flags=&amp;quot;vendor,mandatory&amp;quot; vendor=&amp;quot;10415&amp;quot;&amp;gt;22345678&amp;lt;/XRES&amp;gt;&lt;br /&gt;
       &amp;lt;AUTN flags=&amp;quot;vendor,mandatory&amp;quot; vendor=&amp;quot;10415&amp;quot;&amp;gt;22345678&amp;lt;/AUTN&amp;gt;&lt;br /&gt;
       &amp;lt;ConfidentialityKey flags=&amp;quot;vendor,mandatory&amp;quot; vendor=&amp;quot;10415&amp;quot;&amp;gt;22345678&amp;lt;/ConfidentialityKey&amp;gt;&lt;br /&gt;
       &amp;lt;IntegrityKey flags=&amp;quot;vendor,mandatory&amp;quot; vendor=&amp;quot;10415&amp;quot;&amp;gt;22345678&amp;lt;/IntegrityKey&amp;gt;&lt;br /&gt;
     &amp;lt;/UtranVector&amp;gt;&lt;br /&gt;
     &amp;lt;GeranVector flags=&amp;quot;vendor,mandatory&amp;quot; vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;RAND flags=&amp;quot;vendor,mandatory&amp;quot; vendor=&amp;quot;10415&amp;quot;&amp;gt;01020304111213142122232441424344&amp;lt;/RAND&amp;gt;&lt;br /&gt;
       &amp;lt;SRES flags=&amp;quot;vendor,mandatory&amp;quot; vendor=&amp;quot;10415&amp;quot;&amp;gt;34567811&amp;lt;/SRES&amp;gt;&lt;br /&gt;
       &amp;lt;Kc flags=&amp;quot;vendor,mandatory&amp;quot; vendor=&amp;quot;10415&amp;quot;&amp;gt;34567811&amp;lt;/Kc&amp;gt;&lt;br /&gt;
     &amp;lt;/GeranVector&amp;gt;&lt;br /&gt;
   &amp;lt;/AuthenticationInfo&amp;gt;&lt;br /&gt;
 &amp;lt;/AuthenticationInfoAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Answer, failure, auth data not found:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;AuthenticationInfoAnswer appid=&amp;quot;16777251&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot; flags=&amp;quot;proxiable&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;SessionId&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
   &amp;lt;AuthSessionState&amp;gt;1&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
   &amp;lt;ExperimentalResult&amp;gt;&lt;br /&gt;
     &amp;lt;value vendor=&amp;quot;10415&amp;quot;&amp;gt;auth-data-unavailable&amp;lt;/value&amp;gt;&lt;br /&gt;
   &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
 &amp;lt;/AuthenticationInfoAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Purge UE Command ==&lt;br /&gt;
&lt;br /&gt;
Direction: MME/SGSN -&amp;gt; HSS&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;PurgeUERequest appid=&amp;quot;16777251&amp;quot; flags=&amp;quot;request,proxiable&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Username&amp;gt;004100123456789&amp;lt;/Username&amp;gt;&lt;br /&gt;
   &amp;lt;DestinationRealm&amp;gt;example.com&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
   &amp;lt;PURFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;ue-purged-in-mme,ue-purged-in-sgsn&amp;lt;/PURFlags&amp;gt;&lt;br /&gt;
 &amp;lt;/PurgeUERequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Answer, success:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;PurgeUEAnswer appid=&amp;quot;16777251&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot; flags=&amp;quot;proxiable&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;SessionId&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
   &amp;lt;AuthSessionState&amp;gt;1&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
   &amp;lt;PUAFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;freeze-m-tmsi,freeze-p-tmsi&amp;lt;/PUAFlags&amp;gt;&lt;br /&gt;
   &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;value id=&amp;quot;1&amp;quot;&amp;gt;boic,baoc,regsub&amp;lt;/value&amp;gt;&lt;br /&gt;
   &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
 &amp;lt;/PurgeUEAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Answer, failure, requesting node is unknown:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;PurgeUEAnswer appid=&amp;quot;16777251&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot; flags=&amp;quot;proxiable&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;SessionId&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
   &amp;lt;AuthSessionState&amp;gt;1&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
   &amp;lt;ExperimentalResult&amp;gt;&lt;br /&gt;
     &amp;lt;value vendor=&amp;quot;10415&amp;quot;&amp;gt;unknown-serving-node&amp;lt;/value&amp;gt;&lt;br /&gt;
   &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
 &amp;lt;/PurgeUEAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reset Command ==&lt;br /&gt;
&lt;br /&gt;
Direction: HSS -&amp;gt; MME/SGSN&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ResetRequest appid=&amp;quot;16777251&amp;quot; flags=&amp;quot;request,proxiable&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;DestinationHost&amp;gt;mme.example.com&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
   &amp;lt;DestinationRealm&amp;gt;example.com&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
   &amp;lt;UserId vendor=&amp;quot;10415&amp;quot;&amp;gt;004100&amp;lt;/UserId&amp;gt;&lt;br /&gt;
 &amp;lt;/ResetRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Answer:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ResetAnswer appid=&amp;quot;16777251&amp;quot; flags=&amp;quot;proxiable&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;SessionId&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
   &amp;lt;AuthSessionState&amp;gt;1&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
 &amp;lt;/ResetAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notify Command ==&lt;br /&gt;
&lt;br /&gt;
Direction: MME/SGSN -&amp;gt; HSS&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Request:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;NotifyRequest appid=&amp;quot;16777251&amp;quot; flags=&amp;quot;request,proxiable&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;Username&amp;gt;004100123456789&amp;lt;/Username&amp;gt;&lt;br /&gt;
   &amp;lt;DestinationRealm&amp;gt;example.com&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
   &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;value id=&amp;quot;2&amp;quot;&amp;gt;sms-in-mme&amp;lt;/value&amp;gt;&lt;br /&gt;
   &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
   &amp;lt;TerminalInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;IMEI vendor=&amp;quot;10415&amp;quot;&amp;gt;1234567890&amp;lt;/IMEI&amp;gt;&lt;br /&gt;
   &amp;lt;/TerminalInfo&amp;gt;&lt;br /&gt;
   &amp;lt;MIP6AgentInfo&amp;gt;&lt;br /&gt;
     &amp;lt;MIPHomeAgentAddress&amp;gt;fe80::2&amp;lt;/MIPHomeAgentAddress&amp;gt;&lt;br /&gt;
     &amp;lt;MIP6HomeLinkPrefix&amp;gt;001122&amp;lt;/MIP6HomeLinkPrefix&amp;gt;&lt;br /&gt;
   &amp;lt;/MIP6AgentInfo&amp;gt;&lt;br /&gt;
   &amp;lt;VisitedNetworkIdentifier vendor=&amp;quot;10415&amp;quot;&amp;gt;998877&amp;lt;/VisitedNetworkIdentifier&amp;gt;&lt;br /&gt;
   &amp;lt;ContextIdentifier vendor=&amp;quot;10415&amp;quot;&amp;gt;100&amp;lt;/ContextIdentifier&amp;gt;&lt;br /&gt;
   &amp;lt;ServiceSelection&amp;gt;*&amp;lt;/ServiceSelection&amp;gt;&lt;br /&gt;
   &amp;lt;AlertReason vendor=&amp;quot;10415&amp;quot;&amp;gt;ue-memory-available&amp;lt;/AlertReason&amp;gt;&lt;br /&gt;
   &amp;lt;UESRVCCCapability vendor=&amp;quot;10415&amp;quot;&amp;gt;yes&amp;lt;/UESRVCCCapability&amp;gt;&lt;br /&gt;
   &amp;lt;NORFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;ue-reachable-from-mme,ready-sm-from-mme&amp;lt;/NORFlags&amp;gt;&lt;br /&gt;
   &amp;lt;HSoIMSVOPSS vendor=&amp;quot;10415&amp;quot;&amp;gt;yes&amp;lt;/HSoIMSVOPSS&amp;gt;&lt;br /&gt;
 &amp;lt;/NotifyRequest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Answer, success:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;NotifyAnswer appid=&amp;quot;16777251&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot; flags=&amp;quot;proxiable&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;SessionId&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
   &amp;lt;AuthSessionState&amp;gt;1&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
 &amp;lt;/NotifyAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Answer, failure, unknown node:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;NotifyAnswer appid=&amp;quot;16777251&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot; flags=&amp;quot;proxiable&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;SessionId&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
   &amp;lt;AuthSessionState&amp;gt;1&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
   &amp;lt;ExperimentalResult&amp;gt;&lt;br /&gt;
     &amp;lt;value vendor=&amp;quot;10415&amp;quot;&amp;gt;unknown-serving-node&amp;lt;/value&amp;gt;&lt;br /&gt;
   &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
 &amp;lt;/NotifyAnswer&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* RFC 3588 - Diameter Base Protocol&lt;br /&gt;
* RFC 6733 - Diameter Base Protocol&lt;br /&gt;
* RFC 5516 - Diameter Command Code Registration for the Third Generation Partnership Project (3GPP) Evolved Packet System (EPS)&lt;br /&gt;
* ETSI TS 129.272 - MME and SGSN related interfaces based on Diameter protocol (S6a/S6d, S7a/S7d, S13/S13')&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/MediaWiki:Sidebar</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/MediaWiki:Sidebar"/>
				<updated>2016-09-09T14:40:23Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* MAP &amp;amp; CAMEL XML Interface&lt;br /&gt;
** Introduction|Introduction&lt;br /&gt;
** Connection|Connection&lt;br /&gt;
** Common features|Common features&lt;br /&gt;
** Transport|Transport&lt;br /&gt;
** Application|Application&lt;br /&gt;
** Components|Components&lt;br /&gt;
** Operation codes|Operation codes&lt;br /&gt;
** Error codes|Error codes&lt;br /&gt;
** Latency determination|Latency determination&lt;br /&gt;
&lt;br /&gt;
* Diameter XML Interface&lt;br /&gt;
** Diameter Introduction|Introduction&lt;br /&gt;
** Diameter Connection|Connection&lt;br /&gt;
** Diameter Common features|Common features&lt;br /&gt;
** Diameter Transport|Transport&lt;br /&gt;
** Diameter Commands|Commands&lt;br /&gt;
** Diameter Latency determination|Latency determination&lt;br /&gt;
&lt;br /&gt;
*MAP and CAMEL operations&lt;br /&gt;
** Authentication and security|Authentication and security&lt;br /&gt;
** HLR functions|HLR functions&lt;br /&gt;
** SMS functions|SMS functions&lt;br /&gt;
** CAMEL operations|CAMEL operations&lt;br /&gt;
&lt;br /&gt;
* Diameter interfaces&lt;br /&gt;
**S6a/Sad|S6a/S6d&lt;br /&gt;
&lt;br /&gt;
*Examples&lt;br /&gt;
** CRBT logic|CRBT logic&lt;br /&gt;
** CAMEL proxy|CAMEL proxy&lt;br /&gt;
** MSC simulator|MSC simulator&lt;br /&gt;
** USSD GW|USSD GW&lt;br /&gt;
** SIM Cards|SIM Cards&lt;br /&gt;
&lt;br /&gt;
*Resources&lt;br /&gt;
** Standards|Standards&lt;br /&gt;
&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/MediaWiki:Sidebar</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/MediaWiki:Sidebar"/>
				<updated>2016-09-09T14:39:47Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* MAP &amp;amp; CAMEL XML Interface&lt;br /&gt;
** Introduction|Introduction&lt;br /&gt;
** Connection|Connection&lt;br /&gt;
** Common features|Common features&lt;br /&gt;
** Transport|Transport&lt;br /&gt;
** Application|Application&lt;br /&gt;
** Components|Components&lt;br /&gt;
** Operation codes|Operation codes&lt;br /&gt;
** Error codes|Error codes&lt;br /&gt;
** Latency determination|Latency determination&lt;br /&gt;
&lt;br /&gt;
* Diameter XML Interface&lt;br /&gt;
** Diameter Introduction|Introduction&lt;br /&gt;
** Diameter Connection|Connection&lt;br /&gt;
** Diameter Common features|Common features&lt;br /&gt;
** Diameter Transport|Transport&lt;br /&gt;
** Diameter Commands|Commands&lt;br /&gt;
** Diameter Latency determination|Latency determination&lt;br /&gt;
&lt;br /&gt;
*MAP and CAMEL operations&lt;br /&gt;
** Authentication and security|Authentication and security&lt;br /&gt;
** HLR functions|HLR functions&lt;br /&gt;
** SMS functions|SMS functions&lt;br /&gt;
** CAMEL operations|CAMEL operations&lt;br /&gt;
&lt;br /&gt;
* Diameter interfaces&lt;br /&gt;
**S6a/Sad&lt;br /&gt;
&lt;br /&gt;
*Examples&lt;br /&gt;
** CRBT logic|CRBT logic&lt;br /&gt;
** CAMEL proxy|CAMEL proxy&lt;br /&gt;
** MSC simulator|MSC simulator&lt;br /&gt;
** USSD GW|USSD GW&lt;br /&gt;
** SIM Cards|SIM Cards&lt;br /&gt;
&lt;br /&gt;
*Resources&lt;br /&gt;
** Standards|Standards&lt;br /&gt;
&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/Diameter_Latency_determination</id>
		<title>Diameter Latency determination</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/Diameter_Latency_determination"/>
				<updated>2016-09-09T14:37:17Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: Created page with &amp;quot;The purpose of latency determination is to estimate how much time takes for a message to be processed by a Diameter application.  The xml_tcp module computes average applicati...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The purpose of latency determination is to estimate how much time takes for a message to be processed by a Diameter application.&lt;br /&gt;
&lt;br /&gt;
The xml_tcp module computes average application processing latency by handling timestamps from messages exchanged on that connection.&lt;br /&gt;
* Each message sent by the module can be timestamped with the server's current time&lt;br /&gt;
* Application copies the timestamp from the received XML to the one it responds with&lt;br /&gt;
* If the module receives a timestamp it will compute the difference from the current time and adjust average latency&lt;br /&gt;
&lt;br /&gt;
The timestamps need to be enabled in the xml_tcp.conf module. This can be done per Diameter listener&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
    [listener s6a]&lt;br /&gt;
    type=diameter&lt;br /&gt;
    ...&lt;br /&gt;
    add-timestamp=yes&lt;br /&gt;
&lt;br /&gt;
If enabled the timestamps are added in their own XML element named timestamp-send:&lt;br /&gt;
    &amp;lt;m&amp;gt;&lt;br /&gt;
        &amp;lt;timestamp-send&amp;gt;1377071763411706&amp;lt;/timestamp-send&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
    &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The application is supposed to copy the received timestamp to the response in a timestamp-recv element:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;m&amp;gt;&lt;br /&gt;
        &amp;lt;timestamp-recv&amp;gt;1377071763411706&amp;lt;/timestamp-recv&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
    &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are exposed through the status of the xml_tcp module.&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/Diameter_Commands</id>
		<title>Diameter Commands</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/Diameter_Commands"/>
				<updated>2016-09-09T14:16:11Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: &amp;lt;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the main part of the message holding the data specific to each Diameter interface.&lt;br /&gt;
&lt;br /&gt;
The Diameter command is wrapped in a XML element marked by ''&amp;lt;operation/&amp;gt;'' to make it easy to find the information in the XML. The child of the ''&amp;lt;operation/&amp;gt;'' is an XML describing the Diameter command decoded/to be encoded. The tag of the child element is the name of the command.&lt;br /&gt;
&lt;br /&gt;
Each message can only contain a single Diameter command message.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;m&amp;gt;&lt;br /&gt;
     ....  &lt;br /&gt;
     &amp;lt;operation&amp;gt;&lt;br /&gt;
         &amp;lt;InsertSubscriberDataRequest appid=&amp;quot;16777251&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;DestinationHost&amp;gt;mme.example.com&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
             &amp;lt;DestinationRealm&amp;gt;example.com&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
             &amp;lt;Username&amp;gt;004100123456789&amp;lt;/Username&amp;gt;&lt;br /&gt;
             &amp;lt;SubscriptionData vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
                 &amp;lt;MSISDN vendor=&amp;quot;10415&amp;quot;&amp;gt;40700100100&amp;lt;/MSISDN&amp;gt;&lt;br /&gt;
             &amp;lt;/SubscriptionData&amp;gt;&lt;br /&gt;
             &amp;lt;IDRFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;eps-user-state-req,eps-loc-info-req,local-tz-req,rat-type-req&amp;lt;/IDRFlags&amp;gt;&lt;br /&gt;
         &amp;lt;/InsertSubscriberDataRequest&amp;gt;&lt;br /&gt;
     &amp;lt;/operation&amp;gt;&lt;br /&gt;
  &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
For the XML child containing the command, the following parameters appear as attributes (bold - mandatory, italic - optional)&lt;br /&gt;
** '''appid''': Numeric identifier of the interface to which this message belongs to&lt;br /&gt;
** ''flags'' : Diameter flags for the message. For messages on direction TCP aplication -&amp;gt; Diameter translator, flags are optional in requests/answers(they will be added automatically by Diameter), but if they are added, they must be correctly correlated with the tag. An error answer must set flags to error.&lt;br /&gt;
** ''hhident'': Hop-to-hp identifier. Present in messages received by an application server. When an application sends a request, the Diameter translator automatically adds it&lt;br /&gt;
** ''eeident''&lt;br /&gt;
&lt;br /&gt;
For S6a messages, the application ID is 16777251.&lt;br /&gt;
&lt;br /&gt;
Non-base protocol Diameter AVPs must have '''vendor''' identifier set. For 3GPP AVPs this is 10415.&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
* Request (HSS -&amp;gt; MME &amp;amp; TCP -&amp;gt; Diameter):&lt;br /&gt;
 &amp;lt;m&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp-recv&amp;gt;1470663005862835&amp;lt;/timestamp-recv&amp;gt;&lt;br /&gt;
   &amp;lt;diameter&amp;gt;&lt;br /&gt;
     &amp;lt;timeout&amp;gt;60000&amp;lt;/timeout&amp;gt;&lt;br /&gt;
     &amp;lt;local_node&amp;gt;example.com/hss.example.com&amp;lt;/local_node&amp;gt;&lt;br /&gt;
     &amp;lt;trans_id&amp;gt;hss/123456&amp;lt;/trans_id&amp;gt;&lt;br /&gt;
   &amp;lt;/diameter&amp;gt;&lt;br /&gt;
   &amp;lt;operation&amp;gt;&lt;br /&gt;
     &amp;lt;InsertSubscriberDataRequest appid=&amp;quot;16777251&amp;quot; flags=&amp;quot;request,proxiable&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;DestinationHost&amp;gt;mme.example.com&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
       &amp;lt;DestinationRealm&amp;gt;example.com&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
       &amp;lt;Username&amp;gt;004100123456789&amp;lt;/Username&amp;gt;&lt;br /&gt;
       &amp;lt;SubscriptionData vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;MSISDN vendor=&amp;quot;10415&amp;quot;&amp;gt;40700100100&amp;lt;/MSISDN&amp;gt;&lt;br /&gt;
       &amp;lt;/SubscriptionData&amp;gt;&lt;br /&gt;
       &amp;lt;IDRFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;eps-user-state-req,eps-loc-info-req,local-tz-req,rat-type-req&amp;lt;/IDRFlags&amp;gt;&lt;br /&gt;
     &amp;lt;/InsertSubscriberDataRequest&amp;gt;&lt;br /&gt;
   &amp;lt;/operation&amp;gt;&lt;br /&gt;
 &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Answer (MME -&amp;gt; HSS):&lt;br /&gt;
 &amp;lt;m&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp-send&amp;gt;1470663005862835&amp;lt;/timestamp-send&amp;gt;&lt;br /&gt;
   &amp;lt;diameter&amp;gt;&lt;br /&gt;
     &amp;lt;trans_id&amp;gt;hss/123456&amp;lt;/trans_id&amp;gt;&lt;br /&gt;
   &amp;lt;/diameter&amp;gt;&lt;br /&gt;
   &amp;lt;operation&amp;gt;&lt;br /&gt;
     &amp;lt;InsertSubscriberDataAnswer appid=&amp;quot;16777251&amp;quot; flags=&amp;quot;proxiable&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;SessionId&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
       &amp;lt;AuthSessionState&amp;gt;1&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
       &amp;lt;IMSVOPSSS vendor=&amp;quot;10415&amp;quot;&amp;gt;yes&amp;lt;/IMSVOPSSS&amp;gt;&lt;br /&gt;
       &amp;lt;LastUEActivityTime vendor=&amp;quot;10415&amp;quot;&amp;gt;12345678&amp;lt;/LastUEActivityTime&amp;gt;&lt;br /&gt;
       &amp;lt;RATType vendor=&amp;quot;10415&amp;quot;&amp;gt;e-utran&amp;lt;/RATType&amp;gt;&lt;br /&gt;
       &amp;lt;IDAFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;network-node-area-restricted&amp;lt;/IDAFlags&amp;gt;&lt;br /&gt;
       &amp;lt;EpsUserState vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;MmeUserState vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;UserState vendor=&amp;quot;10415&amp;quot;&amp;gt;attached-reachable-for-paging&amp;lt;/UserState&amp;gt;&lt;br /&gt;
         &amp;lt;/MmeUserState&amp;gt;&lt;br /&gt;
       &amp;lt;/EpsUserState&amp;gt;&lt;br /&gt;
       &amp;lt;EpsLocationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;MmeLocationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;EutranCellGlobalIdentity vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;PlmnIdentity&amp;gt;123456&amp;lt;/PlmnIdentity&amp;gt;&lt;br /&gt;
             &amp;lt;CellIdentity&amp;gt;1234567&amp;lt;/CellIdentity&amp;gt;&lt;br /&gt;
           &amp;lt;/EutranCellGlobalIdentity&amp;gt;&lt;br /&gt;
           &amp;lt;GeographicalInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;0001020304050607&amp;lt;/GeographicalInfo&amp;gt;&lt;br /&gt;
           &amp;lt;GeodeticInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;00010203040506070809&amp;lt;/GeodeticInfo&amp;gt;&lt;br /&gt;
           &amp;lt;CurrentLocationRetrieved vendor=&amp;quot;10415&amp;quot;&amp;gt;active-loc-retrieval&amp;lt;/CurrentLocationRetrieved&amp;gt;&lt;br /&gt;
           &amp;lt;AgeOfLocationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;7&amp;lt;/AgeOfLocationInfo&amp;gt;&lt;br /&gt;
           &amp;lt;UserCsgInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;CsgId vendor=&amp;quot;10415&amp;quot;&amp;gt;345&amp;lt;/CsgId&amp;gt;&lt;br /&gt;
             &amp;lt;CsgAccessMode vendor=&amp;quot;10415&amp;quot;&amp;gt;closed&amp;lt;/CsgAccessMode&amp;gt;&lt;br /&gt;
             &amp;lt;CsgMembershipInd vendor=&amp;quot;10415&amp;quot;&amp;gt;yes&amp;lt;/CsgMembershipInd&amp;gt;&lt;br /&gt;
           &amp;lt;/UserCsgInfo&amp;gt;&lt;br /&gt;
         &amp;lt;/MmeLocationInfo&amp;gt;&lt;br /&gt;
         &amp;lt;SgsnLocationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;SAI vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;PlmnIdentity&amp;gt;12345&amp;lt;/PlmnIdentity&amp;gt;&lt;br /&gt;
             &amp;lt;LAC&amp;gt;1122&amp;lt;/LAC&amp;gt;&lt;br /&gt;
             &amp;lt;SAC&amp;gt;99&amp;lt;/SAC&amp;gt;&lt;br /&gt;
           &amp;lt;/SAI&amp;gt;&lt;br /&gt;
         &amp;lt;/SgsnLocationInfo&amp;gt;&lt;br /&gt;
       &amp;lt;/EpsLocationInfo&amp;gt;&lt;br /&gt;
       &amp;lt;LocalTimeZone vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;TimeZone vendor=&amp;quot;10415&amp;quot;&amp;gt;+2&amp;lt;/TimeZone&amp;gt;&lt;br /&gt;
         &amp;lt;DaylightSavingTime vendor=&amp;quot;10415&amp;quot;&amp;gt;1&amp;lt;/DaylightSavingTime&amp;gt;&lt;br /&gt;
       &amp;lt;/LocalTimeZone&amp;gt;&lt;br /&gt;
       &amp;lt;IDAFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;network-node-area-restricted&amp;lt;/IDAFlags&amp;gt;&lt;br /&gt;
     &amp;lt;/InsertSubscriberDataAnswer&amp;gt;&lt;br /&gt;
   &amp;lt;/operation&amp;gt;&lt;br /&gt;
 &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Error (local host -&amp;gt; TCP application)&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;m&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp-send&amp;gt;1470663005862835&amp;lt;/timestamp-send&amp;gt;&lt;br /&gt;
   &amp;lt;diameter&amp;gt;&lt;br /&gt;
     &amp;lt;trans_id&amp;gt;hss/123456&amp;lt;/trans_id&amp;gt;&lt;br /&gt;
   &amp;lt;/diameter&amp;gt;&lt;br /&gt;
   &amp;lt;operation&amp;gt;&lt;br /&gt;
   &amp;lt;InsertSubscriberDataAnswer appid=&amp;quot;16777251&amp;quot; flags=&amp;quot;error&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;gt;&lt;br /&gt;
     &amp;lt;OriginHost&amp;gt;hss.example.com&amp;lt;/OriginHost&amp;gt;&lt;br /&gt;
     &amp;lt;OriginRealm&amp;gt;example.com&amp;lt;/OriginRealm&amp;gt;&lt;br /&gt;
     &amp;lt;ResultCode&amp;gt;3002&amp;lt;/ResultCode&amp;gt;&lt;br /&gt;
     &amp;lt;ErrorMessage&amp;gt;timeout&amp;lt;/ErrorMessage&amp;gt;&lt;br /&gt;
   &amp;lt;/InsertSubscriberDataAnswer&amp;gt;&lt;br /&gt;
   &amp;lt;/operation&amp;gt;&lt;br /&gt;
  &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Request (MME -&amp;gt; HSS &amp;amp; Diameter -&amp;gt; TCP)&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;m&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp-send&amp;gt;1470663005862835&amp;lt;/timestamp-send&amp;gt;&lt;br /&gt;
   &amp;lt;diameter&amp;gt;&lt;br /&gt;
     &amp;lt;trans_id&amp;gt;diam/456789&amp;lt;/trans_id&amp;gt;&lt;br /&gt;
   &amp;lt;/diameter&amp;gt;&lt;br /&gt;
   &amp;lt;operation&amp;gt;&lt;br /&gt;
     &amp;lt;AuthenticationInfoRequest appid=&amp;quot;16777251&amp;quot; flags=&amp;quot;request,proxiable&amp;quot;  hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;gt;&lt;br /&gt;
       &amp;lt;DestinationRealm&amp;gt;example.com&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
       &amp;lt;Username&amp;gt;004100123456789&amp;lt;/Username&amp;gt;&lt;br /&gt;
       &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;value id=&amp;quot;2&amp;quot;&amp;gt;sms-in-mme&amp;lt;/value&amp;gt;&lt;br /&gt;
       &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
       &amp;lt;RequestedEutranAuthInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;NumberOfRequestedVectors vendor=&amp;quot;10415&amp;quot;&amp;gt;5&amp;lt;/NumberOfRequestedVectors&amp;gt;&lt;br /&gt;
         &amp;lt;ImmediateResponsePreferred vendor=&amp;quot;10415&amp;quot;/&amp;gt;&lt;br /&gt;
         &amp;lt;ReSynchronisationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;001122&amp;lt;/ReSynchronisationInfo&amp;gt;&lt;br /&gt;
       &amp;lt;/RequestedEutranAuthInfo&amp;gt;&lt;br /&gt;
       &amp;lt;RequestedUtranGeranAuthInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;NumberOfRequestedVectors vendor=&amp;quot;10415&amp;quot;&amp;gt;3&amp;lt;/NumberOfRequestedVectors&amp;gt;&lt;br /&gt;
         &amp;lt;ReSynchronisationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;001122&amp;lt;/ReSynchronisationInfo&amp;gt;&lt;br /&gt;
       &amp;lt;/RequestedUtranGeranAuthInfo&amp;gt;&lt;br /&gt;
       &amp;lt;VisitedPlmnId vendor=&amp;quot;10415&amp;quot;&amp;gt;040100&amp;lt;/VisitedPlmnId&amp;gt;&lt;br /&gt;
     &amp;lt;/AuthenticationInfoRequest&amp;gt;&lt;br /&gt;
   &amp;lt;/operation&amp;gt;&lt;br /&gt;
  &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Answer (HSS -&amp;gt; MME &amp;amp; TCP -&amp;gt; Diameter):&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;m&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp-recv&amp;gt;1470663005862835&amp;lt;/timestamp-recv&amp;gt;&lt;br /&gt;
   &amp;lt;diameter&amp;gt;&lt;br /&gt;
     &amp;lt;trans_id&amp;gt;diam/456789&amp;lt;/trans_id&amp;gt;&lt;br /&gt;
   &amp;lt;/diameter&amp;gt;&lt;br /&gt;
   &amp;lt;operation&amp;gt;&lt;br /&gt;
     &amp;lt;AuthenticationInfoAnswer appid=&amp;quot;16777251&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;SessionId&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
       &amp;lt;AuthSessionState&amp;gt;1&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
       &amp;lt;VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
         &amp;lt;value vendor=&amp;quot;10415&amp;quot; auth=&amp;quot;true&amp;quot;&amp;gt;16777251&amp;lt;/value&amp;gt;&lt;br /&gt;
       &amp;lt;/VendorSpecificApplicationId&amp;gt;&lt;br /&gt;
       &amp;lt;ResultCode&amp;gt;2001&amp;lt;/ResultCode&amp;gt;&lt;br /&gt;
       &amp;lt;ErrorDiagnostic vendor=&amp;quot;10415&amp;quot;&amp;gt;odb-HPLMN-APN&amp;lt;/ErrorDiagnostic&amp;gt;&lt;br /&gt;
       &amp;lt;SupportedFeatures vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;value vendor=&amp;quot;10415&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;baoc,boic&amp;lt;/value&amp;gt;&lt;br /&gt;
       &amp;lt;/SupportedFeatures&amp;gt;&lt;br /&gt;
      &amp;lt;AuthenticationInfo vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;EutranVector vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;ItemNumber vendor=&amp;quot;10415&amp;quot;&amp;gt;1&amp;lt;/ItemNumber&amp;gt;&lt;br /&gt;
         &amp;lt;RAND vendor=&amp;quot;10415&amp;quot;&amp;gt;01020304111213142122232441424344&amp;lt;/RAND&amp;gt;&lt;br /&gt;
         &amp;lt;XRES vendor=&amp;quot;10415&amp;quot;&amp;gt;12345678&amp;lt;/XRES&amp;gt;&lt;br /&gt;
         &amp;lt;AUTN vendor=&amp;quot;10415&amp;quot;&amp;gt;12345678&amp;lt;/AUTN&amp;gt;&lt;br /&gt;
         &amp;lt;KASME vendor=&amp;quot;10415&amp;quot;&amp;gt;12345678&amp;lt;/KASME&amp;gt;&lt;br /&gt;
       &amp;lt;/EutranVector&amp;gt;&lt;br /&gt;
       &amp;lt;EutranVector vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;ItemNumber vendor=&amp;quot;10415&amp;quot;&amp;gt;2&amp;lt;/ItemNumber&amp;gt;&lt;br /&gt;
         &amp;lt;RAND vendor=&amp;quot;10415&amp;quot;&amp;gt;01020304111213142122232441424344&amp;lt;/RAND&amp;gt;&lt;br /&gt;
         &amp;lt;XRES vendor=&amp;quot;10415&amp;quot;&amp;gt;00345678&amp;lt;/XRES&amp;gt;&lt;br /&gt;
         &amp;lt;AUTN vendor=&amp;quot;10415&amp;quot;&amp;gt;00345678&amp;lt;/AUTN&amp;gt;&lt;br /&gt;
         &amp;lt;KASME vendor=&amp;quot;10415&amp;quot;&amp;gt;00345678&amp;lt;/KASME&amp;gt;&lt;br /&gt;
       &amp;lt;/EutranVector&amp;gt;&lt;br /&gt;
       &amp;lt;UtranVector vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;RAND vendor=&amp;quot;10415&amp;quot;&amp;gt;01020304111213142122232441424344&amp;lt;/RAND&amp;gt;&lt;br /&gt;
         &amp;lt;XRES vendor=&amp;quot;10415&amp;quot;&amp;gt;22345678&amp;lt;/XRES&amp;gt;&lt;br /&gt;
         &amp;lt;AUTN vendor=&amp;quot;10415&amp;quot;&amp;gt;22345678&amp;lt;/AUTN&amp;gt;&lt;br /&gt;
         &amp;lt;ConfidentialityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;22345678&amp;lt;/ConfidentialityKey&amp;gt;&lt;br /&gt;
         &amp;lt;IntegrityKey vendor=&amp;quot;10415&amp;quot;&amp;gt;22345678&amp;lt;/IntegrityKey&amp;gt;&lt;br /&gt;
       &amp;lt;/UtranVector&amp;gt;&lt;br /&gt;
       &amp;lt;GeranVector vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;RAND vendor=&amp;quot;10415&amp;quot;&amp;gt;01020304111213142122232441424344&amp;lt;/RAND&amp;gt;&lt;br /&gt;
         &amp;lt;SRES vendor=&amp;quot;10415&amp;quot;&amp;gt;34567811&amp;lt;/SRES&amp;gt;&lt;br /&gt;
         &amp;lt;Kc vendor=&amp;quot;10415&amp;quot;&amp;gt;34567811&amp;lt;/Kc&amp;gt;&lt;br /&gt;
       &amp;lt;/GeranVector&amp;gt;&lt;br /&gt;
     &amp;lt;/AuthenticationInfo&amp;gt;&lt;br /&gt;
    &amp;lt;/AuthenticationInfoAnswer&amp;gt;&lt;br /&gt;
   &amp;lt;/operation&amp;gt;&lt;br /&gt;
  &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Error (HSS -&amp;gt; MME &amp;amp; TCP -&amp;gt; Diameter, failure, auth data not found):&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;m&amp;gt;&lt;br /&gt;
   &amp;lt;timestamp-recv&amp;gt;1470663005862835&amp;lt;/timestamp-recv&amp;gt;&lt;br /&gt;
   &amp;lt;diameter&amp;gt;&lt;br /&gt;
     &amp;lt;trans_id&amp;gt;diam/456789&amp;lt;/trans_id&amp;gt;&lt;br /&gt;
   &amp;lt;/diameter&amp;gt;&lt;br /&gt;
   &amp;lt;operation&amp;gt;&lt;br /&gt;
   &amp;lt;AuthenticationInfoAnswer appid=&amp;quot;16777251&amp;quot; hhident=&amp;quot;${hhident}&amp;quot; eeident=&amp;quot;${eeident}&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;SessionId&amp;gt;${session_id}&amp;lt;/SessionId&amp;gt;&lt;br /&gt;
     &amp;lt;AuthSessionState&amp;gt;1&amp;lt;/AuthSessionState&amp;gt;&lt;br /&gt;
     &amp;lt;ExperimentalResult&amp;gt;&lt;br /&gt;
       &amp;lt;value vendor=&amp;quot;10415&amp;quot;&amp;gt;auth-data-unavailable&amp;lt;/value&amp;gt;&lt;br /&gt;
     &amp;lt;/ExperimentalResult&amp;gt;&lt;br /&gt;
   &amp;lt;/AuthenticationInfoAnswer&amp;gt;&lt;br /&gt;
   &amp;lt;/operation&amp;gt;&lt;br /&gt;
  &amp;lt;/m&amp;gt;&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/Diameter_Commands</id>
		<title>Diameter Commands</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/Diameter_Commands"/>
				<updated>2016-09-09T13:55:01Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the main part of the message holding the data specific to each Diameter interface.&lt;br /&gt;
&lt;br /&gt;
The Diameter command is wrapped in a XML element marked by ''&amp;lt;operation/&amp;gt;'' to make it easy to find the information in the XML. The child of the ''&amp;lt;operation/&amp;gt;'' is an XML describing the Diameter command decoded/to be encoded. The tag of the child element is the name of the command.&lt;br /&gt;
&lt;br /&gt;
Each message can only contain a single Diameter command message.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;m&amp;gt;&lt;br /&gt;
     ....  &lt;br /&gt;
     &amp;lt;operation&amp;gt;&lt;br /&gt;
         &amp;lt;InsertSubscriberDataRequest appid=&amp;quot;16777251&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;DestinationHost&amp;gt;mme.example.com&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
             &amp;lt;DestinationRealm&amp;gt;example.com&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
             &amp;lt;Username&amp;gt;004100123456789&amp;lt;/Username&amp;gt;&lt;br /&gt;
             &amp;lt;SubscriptionData vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
                 &amp;lt;MSISDN vendor=&amp;quot;10415&amp;quot;&amp;gt;40700100100&amp;lt;/MSISDN&amp;gt;&lt;br /&gt;
             &amp;lt;/SubscriptionData&amp;gt;&lt;br /&gt;
             &amp;lt;IDRFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;eps-user-state-req,eps-loc-info-req,local-tz-req,rat-type-req&amp;lt;/IDRFlags&amp;gt;&lt;br /&gt;
         &amp;lt;/InsertSubscriberDataRequest&amp;gt;&lt;br /&gt;
     &amp;lt;/operation&amp;gt;&lt;br /&gt;
  &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
&lt;br /&gt;
For the XML child containing the command, the following parameters appear as attributes (bold - mandatory, italic - optional)&lt;br /&gt;
** '''appid''': Numeric identifier of the interface to which this message belongs to&lt;br /&gt;
** ''flags'' : Diameter flags for the message. For messages on direction TCP aplication -&amp;gt; Diameter translator, flags are optional in requests/answers(they will be added automatically by Diameter), but if they are added, they must be correctly correlated with the tag. An error answer must set flags to error.&lt;br /&gt;
&lt;br /&gt;
For S6a messages, the application ID is 16777251.&lt;br /&gt;
&lt;br /&gt;
Non-base protocol Diameter AVPs must have '''vendor''' identifier set. For 3GPP AVPs this is 10415.&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/Diameter_Commands</id>
		<title>Diameter Commands</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/Diameter_Commands"/>
				<updated>2016-09-09T13:40:10Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: Created page with &amp;quot;This is the main part of the message holding the data specific to each Diameter interface.  The Diameter command is wrapped in a XML element marked by ''&amp;lt;operation/&amp;gt;'' to make...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the main part of the message holding the data specific to each Diameter interface.&lt;br /&gt;
&lt;br /&gt;
The Diameter command is wrapped in a XML element marked by ''&amp;lt;operation/&amp;gt;'' to make it easy to find the information in the XML. The child of the ''&amp;lt;operation/&amp;gt;'' is an XML describing the Diameter command decoded/to be encoded. The tag of the child element is the name of the command.&lt;br /&gt;
&lt;br /&gt;
Each message can only contain a single Diameter command message.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;m&amp;gt;&lt;br /&gt;
     ....  &lt;br /&gt;
     &amp;lt;operation&amp;gt;&lt;br /&gt;
         &amp;lt;InsertSubscriberDataRequest appid=&amp;quot;16777251&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;DestinationHost&amp;gt;mme.example.com&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
             &amp;lt;DestinationRealm&amp;gt;example.com&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
             &amp;lt;Username&amp;gt;004100123456789&amp;lt;/Username&amp;gt;&lt;br /&gt;
             &amp;lt;SubscriptionData vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
                 &amp;lt;MSISDN vendor=&amp;quot;10415&amp;quot;&amp;gt;40700100100&amp;lt;/MSISDN&amp;gt;&lt;br /&gt;
             &amp;lt;/SubscriptionData&amp;gt;&lt;br /&gt;
             &amp;lt;IDRFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;eps-user-state-req,eps-loc-info-req,local-tz-req,rat-type-req&amp;lt;/IDRFlags&amp;gt;&lt;br /&gt;
         &amp;lt;/InsertSubscriberDataRequest&amp;gt;&lt;br /&gt;
     &amp;lt;/operation&amp;gt;&lt;br /&gt;
  &amp;lt;/m&amp;gt;&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/Diameter_Transport</id>
		<title>Diameter Transport</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/Diameter_Transport"/>
				<updated>2016-09-09T11:56:13Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The transport part of the message contains parameters related to identifying a message and controlling the transmission of a Diameter message. For requests from application serves, these parameters are combined with parameters from the Diameter command to configure the handling and routing of the message.&lt;br /&gt;
&lt;br /&gt;
This part of the message is marked by the '''&amp;lt;diameter/&amp;gt;''' tag and contains information related to sending/receiving messages, but are not part of the Diameter command. &lt;br /&gt;
&lt;br /&gt;
These are the parameters for sending a message (bold means mandatory, italic - optional):&lt;br /&gt;
* '''trans_id''': Unique identifier per direction used to match requests and answers and identify a certain Diameter transaction. In Diameter -&amp;gt; TCP direction, this is set by the Diameter level and it must be returned in the answer sent by the TCP application. In the TCP -&amp;gt; Diameter direction, the TCP application sets it in the request and the Diameter level will return in the answer. The identifier has no required format, must be only a uniquely generated string per Diameter transaction.&lt;br /&gt;
* '''local_node''': Identifier of the node (${realm}/${host}) to use for sending a request from the TCP application.  If not present, one must be set in ''connection.'' configuration of the listener. The one present in XML will override the configured one. &lt;br /&gt;
* ''timeout'': setting the timeout for a request in the TCP application -&amp;gt; Diameter direction. This allows overriding the configured Diameter timeout setting (optional). It can also be set in ''connection.'' configuration or in diameter configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;m&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;lt;diameter&amp;gt;&lt;br /&gt;
     &amp;lt;timeout&amp;gt;60000&amp;lt;/timeout&amp;gt;&lt;br /&gt;
     &amp;lt;local_node&amp;gt;example.com/hss.example.com&amp;lt;/local_node&amp;gt;&lt;br /&gt;
     &amp;lt;trans_id&amp;gt;hss/123456&amp;lt;/trans_id&amp;gt;&lt;br /&gt;
   &amp;lt;/diameter&amp;gt;&lt;br /&gt;
   ....&lt;br /&gt;
 &amp;lt;/m&amp;gt;&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/Diameter_Transport</id>
		<title>Diameter Transport</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/Diameter_Transport"/>
				<updated>2016-09-09T11:27:20Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: Created page with &amp;quot;The transport part of the message contains parameters related to identifying a message and controlling the transmission of a Diameter message. For requests from application se...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The transport part of the message contains parameters related to identifying a message and controlling the transmission of a Diameter message. For requests from application serves, these parameters are combined with parameters from the Diameter command to configure the handling and routing of the message.&lt;br /&gt;
&lt;br /&gt;
This part of the message is marked by the '''&amp;lt;diameter/&amp;gt;''' tag and contains information related to sending/receiving messages, but are not part of the Diameter command. &lt;br /&gt;
&lt;br /&gt;
These are the parameters for sending a message (bold means mandatory, italic - optional):&lt;br /&gt;
* '''trans_id''': Unique identifier per direction used to match requests and answers and identify a certain Diameter transaction. In Diameter -&amp;gt; TCP direction, this is set by the Diameter level and it must be returned in the answer sent by the TCP application. In the TCP -&amp;gt; Diameter direction, the TCP application sets it in the request and the Diameter level will return in the answer. The identifier has no required format, must be only a uniquely generated string per Diameter transaction.&lt;br /&gt;
* '''local_node''': Identifier of the node (${realm}/${host}) to use for sending a request from the TCP application.  If not present, one must be set in ''connection.'' configuration of the listener. The one present in XML will override the configured one. &lt;br /&gt;
* ''timeout'': setting the timeout for a request in the TCP application -&amp;gt; Diameter direction. This allows overriding the configured Diameter timeout setting (optional). It can also be set in ''connection.'' configuration or in diameter configuration.&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/Diameter_Common_features</id>
		<title>Diameter Common features</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/Diameter_Common_features"/>
				<updated>2016-09-09T10:52:02Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: Created page with &amp;quot;Messages are represented hierarchically in XML format. There may be more parameters than described in this specification. Unknown parameters should be ignored.  Each message c...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Messages are represented hierarchically in XML format. There may be more parameters than described in this specification. Unknown parameters should be ignored.&lt;br /&gt;
&lt;br /&gt;
Each message contains 3 major parts:&lt;br /&gt;
&lt;br /&gt;
* Latency related information&lt;br /&gt;
* Diameter information regarding identification and transport&lt;br /&gt;
* Diameter command&lt;br /&gt;
&lt;br /&gt;
In XML these map like in this example:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;m&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
     &amp;lt;timestamp-recv&amp;gt;1470663005862835&amp;lt;/timestamp-recv&amp;gt;&lt;br /&gt;
     &amp;lt;diameter&amp;gt;&lt;br /&gt;
         &amp;lt;timeout&amp;gt;60000&amp;lt;/timeout&amp;gt;&lt;br /&gt;
         &amp;lt;local_node&amp;gt;example.com/hss.example.com&amp;lt;/local_node&amp;gt;&lt;br /&gt;
         &amp;lt;trans_id&amp;gt;hss/123456&amp;lt;/trans_id&amp;gt;&lt;br /&gt;
     &amp;lt;/diameter&amp;gt;&lt;br /&gt;
     &amp;lt;operation&amp;gt;&lt;br /&gt;
         &amp;lt;InsertSubscriberDataRequest appid=&amp;quot;16777251&amp;quot; flags=&amp;quot;request,proxiable&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;DestinationHost&amp;gt;mme.example.com&amp;lt;/DestinationHost&amp;gt;&lt;br /&gt;
             &amp;lt;DestinationRealm&amp;gt;example.com&amp;lt;/DestinationRealm&amp;gt;&lt;br /&gt;
             &amp;lt;Username&amp;gt;004100123456789&amp;lt;/Username&amp;gt;&lt;br /&gt;
             &amp;lt;SubscriptionData vendor=&amp;quot;10415&amp;quot;&amp;gt;&lt;br /&gt;
                 &amp;lt;MSISDN vendor=&amp;quot;10415&amp;quot;&amp;gt;40700100100&amp;lt;/MSISDN&amp;gt;&lt;br /&gt;
             &amp;lt;/SubscriptionData&amp;gt;&lt;br /&gt;
             &amp;lt;IDRFlags vendor=&amp;quot;10415&amp;quot;&amp;gt;eps-user-state-req,eps-loc-info-req,local-tz-req,rat-type-req&amp;lt;/IDRFlags&amp;gt;&lt;br /&gt;
         &amp;lt;/InsertSubscriberDataRequest&amp;gt;&lt;br /&gt;
     &amp;lt;/operation&amp;gt;&lt;br /&gt;
 &amp;lt;/m&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
In these examples the XML is nicely indented for readability. In practice any whitespace between XML elements may be omitted.&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/Diameter_Connection</id>
		<title>Diameter Connection</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/Diameter_Connection"/>
				<updated>2016-09-09T10:43:36Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: Created page with &amp;quot;The connection used for exchange of XML formatted messages is a TCP socket. As an option TLS can be used to protect the information. In that case the information on this page ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The connection used for exchange of XML formatted messages is a TCP socket. As an option TLS can be used to protect the information. In that case the information on this page applies only to the unencrypted data, the certificate check and establishment of encryption are outside the scope of this page.&lt;br /&gt;
&lt;br /&gt;
==Establishing the connection==&lt;br /&gt;
&lt;br /&gt;
A connection is established from the application to the Diameter translator. Each translator is associated with a TCP listener. Each TCP listener is associated with a certain Diameter interface. An application can establish multiple connections to the Diameter translator. Each connection is independent from the others. To establish the connection a TCP socket must be connected to the agreed listening port of the translator. Upon a successful connection XML messages exchange can start.&lt;br /&gt;
&lt;br /&gt;
The XML declaration &amp;lt;?xml … ?&amp;gt; must be present in the first exchanged message. On further messages the declaration may be omitted.&lt;br /&gt;
&lt;br /&gt;
All messages must have a root &amp;lt;m&amp;gt; element. The optional xmlns attribute must be &amp;quot;http://yate.null.ro/xml/diameter/v1&amp;quot; (note that the URL doesn't point to a valid location).&lt;br /&gt;
&lt;br /&gt;
The closing tag &amp;lt;/m&amp;gt; can be used to look up for the end of XML in the stream.&lt;br /&gt;
&lt;br /&gt;
==Announcing capabilities==&lt;br /&gt;
&lt;br /&gt;
After connection on the TCP socket, the application will announce its capabilities. Otherwise, it will not be considered a valid connection for Diameter messages and it will be ignored.&lt;br /&gt;
&lt;br /&gt;
This initial XML message must have both an XML declaration and an xmlns in the root element indicating the correct version of the protocol is being spoken.&lt;br /&gt;
&lt;br /&gt;
Each supported capability will be announced in a &amp;lt;c&amp;gt; element placed in the root element.&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;m xmlns=&amp;quot;http://yate.null.ro/xml/diameter/v1&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;c&amp;gt;HSSMobility&amp;lt;/c&amp;gt;&lt;br /&gt;
     &amp;lt;c&amp;gt;MMEMobility&amp;lt;/c&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
 &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On success the translator will confirm and indicate the application is active (receives messages):&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;m xmlns=&amp;quot;http://yate.null.ro/xml/diameter/v1&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;state&amp;gt;active&amp;lt;/state&amp;gt;&lt;br /&gt;
 &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On failure the converter may return an error text and will close the socket after that. In case of XML error or xmlns mismatch no error is returned.&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;m xmlns=&amp;quot;http://yate.null.ro/xml/tcap/v1&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;state&amp;gt;inactive&amp;lt;/state&amp;gt;&lt;br /&gt;
     &amp;lt;error&amp;gt;Unsupported: Charging&amp;lt;/error&amp;gt;&lt;br /&gt;
 &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For S6a interface, the capabilities are organized by whom can handle the requests. Capability - operations associationsare: &lt;br /&gt;
* HSSMobility : UpdateLocationRequest, UpdateLocationAnswer, PurgeUERequest, PurgeUEAnswer, NotifyRequest, NotifyAnswer&lt;br /&gt;
* MMEMobility :CancelLocationRequest, CancelLocationAnswer, InsertSubscriberDataRequest, InsertSubscriberDataAnswer, DeleteSubscriberDataRequest, DeleteSubscriberDataAnswer, ResetRequest, ResetAnswer&lt;br /&gt;
* HSSAuthentication : AuthenticationInfoRequest, AuthenticationInfoAnswer &lt;br /&gt;
&lt;br /&gt;
==Generating and processing Diameter messages==&lt;br /&gt;
&lt;br /&gt;
While in active state, the application will receive XML Diameter-specific formatted messages for handling. It can also send messages, either as an answer to a previous incoming request or to generate a new outbound request.&lt;br /&gt;
&lt;br /&gt;
==Preparing shutdown==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When an application wishes to stop processing it should indicate to the translator to stop delivering messages for new requests/sessions. Messages for currently running requests will still be delivered.&lt;br /&gt;
&lt;br /&gt;
This is done by indicating lack of all capabilities in an empty &amp;lt;c/&amp;gt; element:&lt;br /&gt;
 &amp;lt;m&amp;gt;&lt;br /&gt;
    &amp;lt;c/&amp;gt;&lt;br /&gt;
 &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The converter will not answer at once, instead it will continue to deliver messages for existing requests/sessions. Eventually these requests will dry up and the new state will be applied:&lt;br /&gt;
 &amp;lt;m&amp;gt;&lt;br /&gt;
   &amp;lt;state&amp;gt;inactive&amp;lt;/state&amp;gt;&lt;br /&gt;
 &amp;lt;/m&amp;gt;&lt;br /&gt;
&lt;br /&gt;
At this point it is safe to close the socket.&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/Diameter_Introduction</id>
		<title>Diameter Introduction</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/Diameter_Introduction"/>
				<updated>2016-09-09T09:42:16Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Introduction}}&lt;br /&gt;
&lt;br /&gt;
The purpose of this document is to describe the XML based protocol used to implement communication between the YATE Diameter implementation and the Diameter application servers for mobile services so that exchange of Diameter information between YATE and application servers can be done over TCP connections.&lt;br /&gt;
&lt;br /&gt;
Diameter is an authentication, authorization, and accounting protocol for computer networks. In LTE, several Diameter applications are defined and used. &lt;br /&gt;
The primary aim is to allow applications servers to handle and send Diameter commands regarding the S6a interface (MME - HSS interface).&lt;br /&gt;
&lt;br /&gt;
The aim of the protocol is to map Diameter commands from the interface and any other relevant information needed for the transport of the command to XML messages as transparently as possible.&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/Diameter_Introduction</id>
		<title>Diameter Introduction</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/Diameter_Introduction"/>
				<updated>2016-09-09T09:11:28Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: Created page with &amp;quot;{{DISPLAYTITLE:Introduction}}  The purpose of this document is to describe the XML based protocol used to implement communication between the YATE Diameter implementation and ...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:Introduction}}&lt;br /&gt;
&lt;br /&gt;
The purpose of this document is to describe the XML based protocol used to implement communication between the YATE Diameter implementation and the Diameter application servers for mobile services.&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/MediaWiki:Sidebar</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/MediaWiki:Sidebar"/>
				<updated>2016-09-09T09:08:49Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* MAP &amp;amp; CAMEL XML Interface&lt;br /&gt;
** Introduction|Introduction&lt;br /&gt;
** Connection|Connection&lt;br /&gt;
** Common features|Common features&lt;br /&gt;
** Transport|Transport&lt;br /&gt;
** Application|Application&lt;br /&gt;
** Components|Components&lt;br /&gt;
** Operation codes|Operation codes&lt;br /&gt;
** Error codes|Error codes&lt;br /&gt;
** Latency determination|Latency determination&lt;br /&gt;
&lt;br /&gt;
* Diameter XML Interface&lt;br /&gt;
** Diameter Introduction|Introduction&lt;br /&gt;
** Diameter Connection|Connection&lt;br /&gt;
** Diameter Common features|Common features&lt;br /&gt;
** Diameter Transport|Transport&lt;br /&gt;
** Diameter Commands|Commands&lt;br /&gt;
** Diameter Latency determination|Latency determination&lt;br /&gt;
&lt;br /&gt;
*MAP and CAMEL operations&lt;br /&gt;
** Authentication and security|Authentication and security&lt;br /&gt;
** HLR functions|HLR functions&lt;br /&gt;
** SMS functions|SMS functions&lt;br /&gt;
** CAMEL operations|CAMEL operations&lt;br /&gt;
&lt;br /&gt;
*Examples&lt;br /&gt;
** CRBT logic|CRBT logic&lt;br /&gt;
** CAMEL proxy|CAMEL proxy&lt;br /&gt;
** MSC simulator|MSC simulator&lt;br /&gt;
** USSD GW|USSD GW&lt;br /&gt;
** SIM Cards|SIM Cards&lt;br /&gt;
&lt;br /&gt;
*Resources&lt;br /&gt;
** Standards|Standards&lt;br /&gt;
&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/MediaWiki:Sidebar</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/MediaWiki:Sidebar"/>
				<updated>2016-09-09T09:05:12Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* MAP &amp;amp; CAMEL XML Interface&lt;br /&gt;
** Introduction|Introduction&lt;br /&gt;
** Connection|Connection&lt;br /&gt;
** Common features|Common features&lt;br /&gt;
** Transport|Transport&lt;br /&gt;
** Application|Application&lt;br /&gt;
** Components|Components&lt;br /&gt;
** Operation codes|Operation codes&lt;br /&gt;
** Error codes|Error codes&lt;br /&gt;
** Latency determination|Latency determination&lt;br /&gt;
&lt;br /&gt;
* Diameter XML Interface&lt;br /&gt;
** Diameter Introduction|Introduction&lt;br /&gt;
&lt;br /&gt;
*MAP and CAMEL operations&lt;br /&gt;
** Authentication and security|Authentication and security&lt;br /&gt;
** HLR functions|HLR functions&lt;br /&gt;
** SMS functions|SMS functions&lt;br /&gt;
** CAMEL operations|CAMEL operations&lt;br /&gt;
&lt;br /&gt;
*Examples&lt;br /&gt;
** CRBT logic|CRBT logic&lt;br /&gt;
** CAMEL proxy|CAMEL proxy&lt;br /&gt;
** MSC simulator|MSC simulator&lt;br /&gt;
** USSD GW|USSD GW&lt;br /&gt;
** SIM Cards|SIM Cards&lt;br /&gt;
&lt;br /&gt;
*Resources&lt;br /&gt;
** Standards|Standards&lt;br /&gt;
&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/MediaWiki:Sidebar</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/MediaWiki:Sidebar"/>
				<updated>2016-09-08T08:42:49Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: Reverted edits by Oana (talk) to last revision by Andrei&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
*XML Interface&lt;br /&gt;
** Introduction|Introduction&lt;br /&gt;
** Connection|Connection&lt;br /&gt;
** Common features|Common features&lt;br /&gt;
** Transport|Transport&lt;br /&gt;
** Application|Application&lt;br /&gt;
** Components|Components&lt;br /&gt;
** Operation codes|Operation codes&lt;br /&gt;
** Error codes|Error codes&lt;br /&gt;
** Latency determination|Latency determination&lt;br /&gt;
&lt;br /&gt;
*MAP and CAMEL operations&lt;br /&gt;
** Authentication and security|Authentication and security&lt;br /&gt;
** HLR functions|HLR functions&lt;br /&gt;
** SMS functions|SMS functions&lt;br /&gt;
** CAMEL operations|CAMEL operations&lt;br /&gt;
&lt;br /&gt;
*Examples&lt;br /&gt;
** CRBT logic|CRBT logic&lt;br /&gt;
** CAMEL proxy|CAMEL proxy&lt;br /&gt;
** MSC simulator|MSC simulator&lt;br /&gt;
** USSD GW|USSD GW&lt;br /&gt;
** SIM Cards|SIM Cards&lt;br /&gt;
&lt;br /&gt;
*Resources&lt;br /&gt;
** Standards|Standards&lt;br /&gt;
&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/MediaWiki:Sidebar</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/MediaWiki:Sidebar"/>
				<updated>2016-09-08T08:41:51Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
*XML Interface&lt;br /&gt;
** MAP &amp;amp; CAMEL interface&lt;br /&gt;
*** Introduction|Introduction&lt;br /&gt;
*** Connection|Connection&lt;br /&gt;
*** Common features|Common features&lt;br /&gt;
*** Transport|Transport&lt;br /&gt;
*** Application|Application&lt;br /&gt;
*** Components|Components&lt;br /&gt;
*** Operation codes|Operation codes&lt;br /&gt;
*** Error codes|Error codes&lt;br /&gt;
*** Latency determination|Latency determination&lt;br /&gt;
** Diameter interface&lt;br /&gt;
&lt;br /&gt;
*MAP and CAMEL operations&lt;br /&gt;
** Authentication and security|Authentication and security&lt;br /&gt;
** HLR functions|HLR functions&lt;br /&gt;
** SMS functions|SMS functions&lt;br /&gt;
** CAMEL operations|CAMEL operations&lt;br /&gt;
&lt;br /&gt;
*Examples&lt;br /&gt;
** CRBT logic|CRBT logic&lt;br /&gt;
** CAMEL proxy|CAMEL proxy&lt;br /&gt;
** MSC simulator|MSC simulator&lt;br /&gt;
** USSD GW|USSD GW&lt;br /&gt;
** SIM Cards|SIM Cards&lt;br /&gt;
&lt;br /&gt;
*Resources&lt;br /&gt;
** Standards|Standards&lt;br /&gt;
&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/USSD_GW</id>
		<title>USSD GW</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/USSD_GW"/>
				<updated>2015-09-14T14:35:09Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: /* Keyword values */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an implementation an USSD gateway acting as a MAP Service Control Function (gsmSCF) and as a HLR at the same time. When communicating with a HLR or VLR, the YATE USSD GW acts as a gsmSCF. When communicating with a gsmSCF, the YATE USSDGW acts as a HLR.&lt;br /&gt;
The functionality of the USSD GW allows:&lt;br /&gt;
* redirecting of USSD requests arriving either from user side or gsmSCF side to a SMPP client where they can be altered.&lt;br /&gt;
* acting as a proxy for requests that need not be handled by SMPP clients or when the SMPP handling fails&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MAP USSD description ==&lt;br /&gt;
&lt;br /&gt;
In versions 2 and 3 of the GSM MAP protocol there are 3 operations used for USSD operations:&lt;br /&gt;
* processUnstructedSS-Request&lt;br /&gt;
* unstructuredSS-Request&lt;br /&gt;
* unstrusturedSS-Notify&lt;br /&gt;
&lt;br /&gt;
The are 2 scenarios for USSD operations:&lt;br /&gt;
* mobile initiated USSD requests&lt;br /&gt;
* network initiated USSD requests&lt;br /&gt;
&lt;br /&gt;
A TCAP dialog used by USSD is always terminated by the network side.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mobile initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobile initiated USSD requests are USSD requests started by the mobile subscriber.  &lt;br /&gt;
&lt;br /&gt;
A USSD request is started when receiving a TCAP BEGIN message containing the ''processUnstructedSS-Request'' Invoke operation. The request can be handled by the VLR, HLR or a gsmSCF. If the VLR does not handle the request, it will transmit it to the HLR. The HLR can either handle it itself or it can transmit it to a gsmSCF for handling.&lt;br /&gt;
&lt;br /&gt;
At this point, the network can either send a response to the request immediately or request additional information. In the first case, the handler of the request will send a TCAP End with ''processUnstructuredSS-Request'' ResultLast containing the result for the request. &lt;br /&gt;
In the latter case, the network will send a TCAP CONTINUE with ''unstructuredSS-Request'' Invoke operation. The response of the mobile subscriber to this request will be passed to the network in a TCAP CONTINUE with ''unstructuredSS-Request'' ResultLast component. At this point, if the network decides that it has enough information for providing the response to the user, it will send a TCAP END with ''processUnstructuredSS-Request'' ResultLast. Otherwise, it can request further information through another ''unstructuredSS-Request'' Invoke operation.&lt;br /&gt;
&lt;br /&gt;
=== Network initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD requests are USSD requests started by the network towards a certain subscriber.&lt;br /&gt;
&lt;br /&gt;
Requests made by the network can be of one of two types:&lt;br /&gt;
* user interaction requests&lt;br /&gt;
* network notification requests.&lt;br /&gt;
&lt;br /&gt;
User interaction requests are USSD requests that the network makes in which it requires some type of information back from the mobile subscriber. These are started by the network through a TCAP BEGIN containing an ''unstructuredSS-Request'' Invoke. The answer from the mobile subscriber will be received in a TCAP CONTINUE containing an ''unstructuredSS-Request'' ResultLast. If the network still wants to request further information from the user it can send another ''unstructuredSS-Request'' Invoke in a TCAP CONTINUE and wait for the answer. Once the network obtains all needed information, but wants (for user friendliness) to notify the user about the result of the operations, it can send: &lt;br /&gt;
* a TCAP CONTINUE containing a ''unstructuredSS-Notify'' Invoke. When the user side respond with a TCAP CONTINUE containing an empty ''unstructuredSS-Notify'', the network can close the dialog through a TCAP END&lt;br /&gt;
* if the network is not interested in the outcome of ''unstructuredSS-Notify'' Invoke operation, it can send a TCAP END containing  ''unstructuredSS-Notify'' invoke.&lt;br /&gt;
If there is nothing to notify to the user, the network can send a TCAP END to close the TCAP dialog.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network notification requests are USSD requests in which the network only sends a notification to the user. This is achieved by sending a TCAP BEGIN message containing a ''unstructuredSS-Notify'' Invoke. The mobile subscriber side will only respond with a TCAP CONTINUE containing an empty ''unstructuredSS-Notify'' in order to signal that the notification was received. The network will close the TCAP dialog through TCAP END.&lt;br /&gt;
&lt;br /&gt;
=== MAP USSD parameters ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following list describe common parameters used across all MAP USSD operations:&lt;br /&gt;
* ''destinationReference'': this parameter will contain either an MSISDN or an IMSI. In the case of mobile originated USSD request, this will identify the user which made the request. In the case of network initiated requests, it will identify the mobile user to be contacted for this request.&lt;br /&gt;
* ''ussd-String'': for ''processUnstructuredSS-Request'' Invoke it contains the dialed USSD code, for the result it would probably contain a message from the network detailing the result of the request. For ''unstructuredSS-Request'' Invoke it will contain a message asking for the user to choose some option and for the result it will contain the option chosen by the user. In the case of ''unstructuredSS-Notify'', this parameter will only be present in the Invoke.&lt;br /&gt;
* ''ussd-DataCodingScheme'': this is a parameter which specifies in which way the ''ussd-String'' parameter is encoded and it is present whenever ''ussd-String'' is present. E.g., this parameter would indicate if the ''ussd-String'' is encoded using GSM7bit encoding or UCS2.&lt;br /&gt;
&lt;br /&gt;
== SMPP USSD description ==&lt;br /&gt;
&lt;br /&gt;
'''TO DO'''&lt;br /&gt;
&lt;br /&gt;
== System description ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== System design ===&lt;br /&gt;
&lt;br /&gt;
In order to provide the specified functionality, the system makes use of the following YATE components:&lt;br /&gt;
* the SS7 stack  present in YATE &lt;br /&gt;
* the camel_map module which decodes/encodes MAP messages coming from the SS7 network to/from internal YATE messages containing MAP operations in XML form. Together with the SS7 layer this provides MAP connectivity with HLR/gsmSCF.&lt;br /&gt;
* the ussd_map module which takes internal MAP messsages decoded by the camel_map moduled and translates them to internal USSD messages. This module acts as gsmSCF towards a HLR and as a HLR towards a gsmSCF.&lt;br /&gt;
* the SMPP stack present in YATE (ysmpp module) which is able to catch internal USSD messages and transmit them over SMPP. It also translates SMPP messages into internal USSD messages.&lt;br /&gt;
* requests for new USSD sessions will go through routing to decide who should handle the request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following sections detail the behaviour of the system in the different USSD scenarios.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mobile originated USSD handling ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A user initiated USSD session is handled according to the following schema:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# HLR sends a ''processUnstructuredSS-Request (Invoke)'' for code *100#. camel_map decodes the ''ussd-String'' into ''ussd-Text=*100#''.&lt;br /&gt;
# the ussd_map module (gsmSCF side) processes the request received from the HLR and emits a ''call.route'' message with ''called=*100#''.&lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with the ''callto'' parameter set to the value returned from routing. ussd_map dispatches the ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will send  it to the target specified in ''callto'' parameter after the module prefix ''ysmppserver/''.&lt;br /&gt;
# The ysmpp module receives and process the received ''submit_sm'' message.&lt;br /&gt;
# The ysmpp module will send a ''call.route'' message with the ''called=*100#''.&lt;br /&gt;
# The ysmpp module emits a ''ussd.execute'' message with ''callto=retvalue from call.route'' message.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ussd.execute message and if it is the target of the message, meaning that ''callto'' starts with ''ussd_map/''. From that message it will build a map.message that it will send to the gsmSCF as a ''processUnstructuresSS-Request (Invoke)'' MAP message.&amp;lt;br&amp;gt;'''NOTE:''' From here on, the gsmSCF could handle the request in one of  two distinguished cases: one where the gsmSCF requires interaction with the mobile subscriber and one where the gsmSCF just needs to respond to the user request. The following steps detail the former case.&amp;lt;br&amp;gt;&lt;br /&gt;
# gsmSCF sends an ''unstructuredSS-Request (Invoke)'' to  request further information.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits an ''ussd.update'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.update'' message and confirms to the SMPP client that the message sent in step 5 was processed.&lt;br /&gt;
# The SMPP client should confirm the processing of the SMPP message sent in step 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver_sm'' message to the SMPP client with the menu received in ''ussd.update'' message.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message with the received menu.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message from SMPP client and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.update'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time in which the mobile subscribers responds can be quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway when receiving the response from the mobile subscriber.&lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 13.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 21.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 9 and 24 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''processUnstructuredSS-Request (ResultLast)''  for the initial user request.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''processUnstructuredSS-Request (ResultLast)'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 22 or 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 21 or 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 31.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 29.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''processUnstructuredSS-Request (ResultLast)''.&lt;br /&gt;
&lt;br /&gt;
==== Network initiated USSD Request ====&lt;br /&gt;
&lt;br /&gt;
A network initiated USSD session is handled as described in the following figure:&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
# gsmSCF sends''unstructuredSS-Request (Invoke)'' to USSD Gateway (HLR part) to present a menu for MSISDN 0015559191.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits a ''call.route'' message with called=0015559191. &lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with ''callto'' set to the route returned in the return value of the ''call.route'' message and dispatches an ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will then send to the target specified in the ''callto'&amp;quot; parameter after the ''ysmppserver'' module prefix.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message towards SMPP server.&lt;br /&gt;
# The SMPP server processes the received ''submit_sm'' message and dispatches a ''call.route'' message.&lt;br /&gt;
# After successfully dispatching of ''call.route'' message the SMPP server will dispatch a ''call.execute'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.execute'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time to receiving a response from the user after gsmSCF has requested user interaction could be possibly quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway &lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 4.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 13.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 1 and 16 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''TCAP END'' in order to finish the USSD session.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''TCAP END'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 13.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 22.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 21.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''END''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fallback/Proxy mode ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following images detail scenarios where the USSD GW is instructed to do failover.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when an HLR sends ''processUnstructuredSS-Request (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:''' &lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message. &lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD session fallback.&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when a gsmSCF sends a &amp;quot;unstructuredSS-Request/unstructuredSS-Notify (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:'''&lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message.&lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The SMPP USSD gateway will also be bypassed when the ''ussd_map'' module is configured to do failover for all requests.&lt;br /&gt;
&lt;br /&gt;
Any type of SMPP error received either in the result for the ''ussd.execute'' or in the first message back from SMPP that does not have a mapping on MAP will lead to the ''ussd_map'' module doing failover. Errors that would generate a failover are errors like timeout, session ended abnormally, unknown errors, congestion errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once ''ussd_map'' decides that failover should be done, it will use the original received message  from the HLR (MO case)/gsmSCF (MT case) and it will only alter the called address to be the one of the gsmSCF/HLR set for the failover.. The calling address will remain the one received from HLR/gsmSCF, the idea being that for the first message we want to pretend that we are the original gsmSCF/HLR. When the receiving end of this message will want to respond, it will use the calling address from the message. Seeing that the ''ussd_map'' module set it to the original calller's address, further messages exchanged in that dialog between HLR and gsmSCF will not pass through USSD GW again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Internal message API ====&lt;br /&gt;
&lt;br /&gt;
This section documents the YATE messages used internally by the USSD GW.&lt;br /&gt;
&lt;br /&gt;
===== call.route =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used by ussd_map and ysmpp module to determine a destination where a new USSD session should be sent for further processing.&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module when receiving a request for a new USSD session on MAP for ''ussd_map'' or on SMPP for ''ysmpp''.&lt;br /&gt;
''ussd_map'' will only send this message if default routing is not enabled from configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
* module&lt;br /&gt;
** type: string &lt;br /&gt;
** Name of the module which requested routing&lt;br /&gt;
* application&lt;br /&gt;
** type: string&lt;br /&gt;
** Name of the ussd_map application which sent this routing request&lt;br /&gt;
* route_type&lt;br /&gt;
** type: keyword, value: ussd &lt;br /&gt;
** Specifies routing type, in this case it'll be USSD routing&lt;br /&gt;
* smpp_session_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
* smpp_system_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* if the message was processed, the return value of the message indicates the destination of the subsequent ''ussd.execute'' message.&lt;br /&gt;
* if the message was not processed or it returned with error (signaled by the return value being either &amp;quot;-&amp;quot; or &amp;quot;error&amp;quot;)&lt;br /&gt;
** ''ussd_map'' will do failover&lt;br /&gt;
** ysmpp will close the SMPP session, indicating an error either set by the call.route or either set to the default unknown error indication.&lt;br /&gt;
&lt;br /&gt;
===== ussd.execute =====&lt;br /&gt;
&lt;br /&gt;
This message is used to begin a new USSD session:&lt;br /&gt;
* on SMPP, if the message is directed to the ''ysmpp'' module&lt;br /&gt;
* on MAP if the message is directed to the ''ussd_map'' module&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module after successful routing stage. In case of the ''ussd_map'' module, this is message is sent if the routing stage did not indicate failover necessity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* callto:  &lt;br /&gt;
** type : string&lt;br /&gt;
** It specifies the target module to process the message. The string should start with  'ysmppserver/' for the  ''ysmpp&amp;quot; module and with ''ussd_map/'' for the ''ussd_map'' module.&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
** Set to false for UCS2 encoding without language indication&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier assigned for this USSD session by the entity that processed this message.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error returned if the message was not processed.&lt;br /&gt;
&lt;br /&gt;
Processing of this message will return failure:&lt;br /&gt;
* if the message will not be processed&lt;br /&gt;
* if the 'id' parameter is missing.&lt;br /&gt;
* in case of processing error &lt;br /&gt;
* in case of congestion&lt;br /&gt;
&lt;br /&gt;
===== ussd.update =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used for transmitting USSD messages during a USSD session. This type of message will be used after the initial stage of creating the session through ''ussd.execute'' has succeeded.&lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP CONTINUE message &lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
** Set to false for UCS2 encoding without language indication&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will be refused if it is received after a ''ussd.finalize'' message.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a values not allowed in the context of the USSD session (e.g., sending a ''processUnstructuredSS-Request inside a ''ussd.update'' message)&lt;br /&gt;
&lt;br /&gt;
===== ussd.finalize =====&lt;br /&gt;
&lt;br /&gt;
This message is used to signal the termination of the USSD session. Successful processing of this message means that the USSD session was terminated and is no longer available. &lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP END/ABORT message depending upon the parameters received. A message containing an error that does not map to a MAP error will generate a TCAP ABORT.&lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client, a message that will usually contain a last message indication.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
** Set to false for UCS2 encoding without language indication&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by 'peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a value not allowed in the context of the USSD session&lt;br /&gt;
&lt;br /&gt;
===== Keyword values =====&lt;br /&gt;
&lt;br /&gt;
This section details acceptable values for parameters listed as having type ''keyword''.&lt;br /&gt;
&lt;br /&gt;
* '''hlr.nature/vlr.nature/gsmscf.nature/destination_reference.nature'''&lt;br /&gt;
** unknown&lt;br /&gt;
** international&lt;br /&gt;
** national&lt;br /&gt;
** network-specific&lt;br /&gt;
** subscriber&lt;br /&gt;
** abbreviated&lt;br /&gt;
&lt;br /&gt;
* '''hlr.plan/vlr.plan/gsmscf.plan/destination_reference.plan'''&lt;br /&gt;
** unknown&lt;br /&gt;
** isdn&lt;br /&gt;
** data&lt;br /&gt;
** telex&lt;br /&gt;
** land-mobile&lt;br /&gt;
** national&lt;br /&gt;
** private&lt;br /&gt;
&lt;br /&gt;
* '''operation_type'''&lt;br /&gt;
** pssd: mapping of MAP v1 USSD operation ''processUnstructuredSS-Data'' and of SMPP operation ''PSSD''. &lt;br /&gt;
** pssr: mapping of MAP v2 USSD operation ''processUnstructuredSS-Request'' and of SMPP operation ''PSSR''.&lt;br /&gt;
** ussr: mapping of MAP v2 USSD operation ''unstructuredSS-Request'' and of SMPP operation ''USSR&amp;quot;.&lt;br /&gt;
** ussn: mapping of MAP v2 USSD operation ''unstructuredSS-Notify'' and of SMPP operation ''USSN''.&lt;br /&gt;
&lt;br /&gt;
* '''error'''&lt;br /&gt;
** invalid_logic:  error reported when required processing does not follow USSD rules (e.g., MT request starting with ''processUnstructuredSS-Requests'')&lt;br /&gt;
** system_failure: error mapping for MAP error ''systemFailure''.&lt;br /&gt;
** data_missing: error mapping for  MAP error ''dataMissing''.&lt;br /&gt;
** unexpected_data: error mapping for MAP error ''unexpectedDataValue''.&lt;br /&gt;
** unknown_alphabet: error mapping for MAP error ''unknownAlphabet''.&lt;br /&gt;
** absent_subscriber: error mapping for MAP error ''absentSubscriber''.&lt;br /&gt;
** illegal_subscriber: error mapping for MAP error ''illegalSubscriber''.&lt;br /&gt;
** illegal_equipment: error mapping for MAP error ''illegalEquipment''.&lt;br /&gt;
** ussd_busy: error mapping for MAP error ''ussd-Busy''.&lt;br /&gt;
** call_barred: error mapping for MAP error ''callBarred''.&lt;br /&gt;
** network_failure: error signaling message transmission failure due to  connectivity issues either on the SS7 side or SMPP side.&lt;br /&gt;
** timeout_expired: error signaling a  request timeout occurrence.&lt;br /&gt;
** ussd_sess_end_abnormally: error signaling USSD session termination due to an unknown cause. Mapping for this error implies a TCAP Abort either being generated of received. &lt;br /&gt;
** unknown_error: error specified when there is no available mapping for an errror from SMPP to MAP or vice versa.&lt;br /&gt;
** throttling_error: error signaling that a message failed to be processed due to processing side being in congestion state.&lt;br /&gt;
** protocol_error: SMPP generic error. This error is put whenever there is a SMPP specific error that cannot be mapped into one of the other errors.&lt;br /&gt;
&lt;br /&gt;
* '''node'''&lt;br /&gt;
** MAP parameter for when error = system_failure &lt;br /&gt;
** maps to networkResource in the MAP Error.&lt;br /&gt;
** possible values are: plmn, hlr, vlr, pvlr, controllingMSC, vmsc, eir, rss. Defaults to plmn if not given&lt;br /&gt;
&lt;br /&gt;
* '''cause'''&lt;br /&gt;
** MAP parameter for when error = call_barred&lt;br /&gt;
** maps to callBarringCause in the MAP Error&lt;br /&gt;
** possible values are: barringServiceActive, operatorBarring. Defaults to operatorBarring if not given&lt;br /&gt;
&lt;br /&gt;
* '''text.encoding'''&lt;br /&gt;
** gsm7bit / GSM7Bit: text was encoded/is to be encoded GSM 7 Bit&lt;br /&gt;
** ucs2 / UCS2: text was encoded/is to be encoded UCS 2&lt;br /&gt;
&lt;br /&gt;
* '''text.lang'''&lt;br /&gt;
**  two character string specifying a language according to ISO 639-1 or integer value if mapping is not provided.&lt;br /&gt;
&lt;br /&gt;
==== SMPP custom parameters ====&lt;br /&gt;
&lt;br /&gt;
* 0x1502 =&amp;gt; IMSI;&lt;br /&gt;
* 0x1503 =&amp;gt; VLR Type of Number;&lt;br /&gt;
* 0x1504 =&amp;gt; VLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1505 =&amp;gt; VLR address;&lt;br /&gt;
* 0x1506 =&amp;gt; GSM SCF Type of Number;&lt;br /&gt;
* 0x1507 =&amp;gt; GSM SCF Numbering Plan Indicator;&lt;br /&gt;
* 0x1508 =&amp;gt; GSM_SCF address;&lt;br /&gt;
* 0x1509 =&amp;gt; Destination Reference Type of Number;&lt;br /&gt;
* 0x150a =&amp;gt; Destination Reference Numbering Plan Indicator;&lt;br /&gt;
* 0x150b =&amp;gt; Destination Reference;&lt;br /&gt;
* 0x150c =&amp;gt; MSISDN&lt;br /&gt;
* 0x150d =&amp;gt; Alerting Pattern&lt;br /&gt;
* 0x1800 =&amp;gt; HLR Type of Number;&lt;br /&gt;
* 0x1801 =&amp;gt; HLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1802 =&amp;gt; HLR address.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
==== ysigchan module ====&lt;br /&gt;
&lt;br /&gt;
In order to have MAP connectivity, TCAP instances must be configured in ''ysigchan.conf'': &lt;br /&gt;
&lt;br /&gt;
 ; Example of a SS7 Transaction Capabilities Application Part&lt;br /&gt;
 ; This component is created when encountering a section of this kind&lt;br /&gt;
 ;[ss7tcap]&lt;br /&gt;
 ; type: keyword: identifies the component as a SS7 Transfer Capabilities Application Part&lt;br /&gt;
 ; type = ss7-tcap-ansi for ANSI TCAP&lt;br /&gt;
 ; type = ss7-tcap-itu for ITU TCAP&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; local_SSN: local SubSystem Number. Mandatory&lt;br /&gt;
 ;local_SSN=&lt;br /&gt;
 &lt;br /&gt;
 ; default_remote_SSN: remote SubSystem Number to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_SSN=&lt;br /&gt;
  &lt;br /&gt;
 ; default_remote_pointcode: remote Point Code to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_pointcode=&lt;br /&gt;
 &lt;br /&gt;
 ; pointcodetype: remote Point Code type. See above documentation for available types&lt;br /&gt;
 ;pointcodetype=&lt;br /&gt;
 &lt;br /&gt;
 ; sccp: Name of the SCCP component to create and be used by this TCAP&lt;br /&gt;
 ; A section with the name given here must exist in order to configure the SCCP level&lt;br /&gt;
 ;sccp=&lt;br /&gt;
 &lt;br /&gt;
 ; default_hopcounter: HopCounter provided to SCCP if the application does not provide one&lt;br /&gt;
 ; Values range 1-15, 0 or boolean false disables, boolean true sets to 15&lt;br /&gt;
 ; A non-zero value will force using XUDT or LUDT instead of UDT messages&lt;br /&gt;
 ;default_hopcounter=false&lt;br /&gt;
 &lt;br /&gt;
 ; transact_timeout: Time in seconds to timeout a TCAP transaction after no more activity was registered on it&lt;br /&gt;
 ; NOTE: Values below 15 seconds will be ignored and the timer will assume the default value.&lt;br /&gt;
 ; Defaults to 300 seconds&lt;br /&gt;
 ;transact_timeout=300&lt;br /&gt;
 &lt;br /&gt;
 ; max_timeout_checks: integer: Maximum number of timeout checks done on a transaction without starting the transaction&lt;br /&gt;
 ;  timer before forcefully starting the transaction timer&lt;br /&gt;
 ; Defaults to 10&lt;br /&gt;
 ;max_timeout_checks=10 &lt;br /&gt;
 &lt;br /&gt;
 ; timeout_check: Time interval in milliseconds to check for timeouts.&lt;br /&gt;
 ; Default to 100 ms&lt;br /&gt;
 ;timeout_check=100 &lt;br /&gt;
 &lt;br /&gt;
 ; floodevents: int: How many queued incoming TCAP messages trigger a congestion warning and the drop mechanism&lt;br /&gt;
 ;  for Unidirectional/Begin/QueryWithPermission/QueryWithoutPermission messages.&lt;br /&gt;
 ;  Exit from congestion will take place when there are less the floodevents/4 messages in the queue&lt;br /&gt;
 ; NOTE! Setting this parameter to 0 will disable the congestion warning and protection. Setting it to one will &lt;br /&gt;
 ;  be overriden and floodevents will be set to 2.&lt;br /&gt;
 ;floodevents=1000&lt;br /&gt;
 &lt;br /&gt;
 ;print-messages: Boolean to enable/disable printing of decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ;extended-debug: Boolean to enable/disable printing of the step-by-step decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload. print-messages must be true.&lt;br /&gt;
 ;extended-debug=false&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for keeping the list of current transactions&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
 [tcap-scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=147                                                                                                                                &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                     &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap-hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=7                                                                                                                                  &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Further configuration for SS7 connectivity is required (SCCP, MTP3, etc.).&lt;br /&gt;
&lt;br /&gt;
==== camel_map module ====&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': As of SVN revision 1285, there is a new ''camelmap'' module. For compatibility reasons, the old module, ''camel_map'', was also kept. Both modules read the same configuration file, ''camel_map.conf''. In order to avoid issues, please make sure to only enable one of these modules in the ''[postload]'' section of ''yate.conf''.&lt;br /&gt;
&lt;br /&gt;
The new module is the one that offers USSD UCS2 encoding without language indication, but beware that TCP functionality has been removed from it. That functionality has been moved to the ''xml_tcp'' module. The module only uses messages to communicate with applications. ''ussd_map'' uses messages, so there should be no need for TCP functionality.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configuring of tracking IDs is done in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ;track_id: string: Shared engine variable name used to obtain a unique tracking ID for TCAP transactions&lt;br /&gt;
 ; If not set, the module will not set a tracking ID for the TCAP transaction&lt;br /&gt;
 ;track_id=&lt;br /&gt;
 &lt;br /&gt;
 ;track_id_base: string: Optional string with which to prefix the tracking ID&lt;br /&gt;
 ; This setting has no effect if track_id is not set&lt;br /&gt;
 ;track_id_base=&lt;br /&gt;
&lt;br /&gt;
In order to allow communication over MAP through SS7, sections configurating application should exist for each role of the ussd_map module (gsmSCF/HLR). A ''camel_map.conf'' section configuring an application looks like this:&lt;br /&gt;
 &lt;br /&gt;
 ;[local appName]&lt;br /&gt;
 ; This section configures a local application which transmits the XML messages as internal Yate messages&lt;br /&gt;
 &lt;br /&gt;
 ; translator: string: name of translator to be used by this application.&lt;br /&gt;
 ; Must be one one the [tcap ...] sections configured in the camel_map.conf file.&lt;br /&gt;
 ;translator=&lt;br /&gt;
  &lt;br /&gt;
 ; capabilities: string: List of capabilities separated by commas which this application supports&lt;br /&gt;
 ;capabilities=&lt;br /&gt;
  &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into a Yate message&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - string: pass the XML as a string&lt;br /&gt;
 ;  - object: pass the XML as an object&lt;br /&gt;
 ;  - both: pass the XML as a string and object&lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; enable: bool: Enable this application&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
&lt;br /&gt;
The translator setting refers to a section of the type defined below which configures atachement to a TCAP instance&lt;br /&gt;
&lt;br /&gt;
 ;[tcap map]&lt;br /&gt;
 ; This section configures a TCAP User MAP/CAMEL protocol translator&lt;br /&gt;
 &lt;br /&gt;
 ; enable: bool: Enable this translator&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of TCAP User &lt;br /&gt;
 ; Allowed values are MAP or CAMEL&lt;br /&gt;
 ;type=MAP&lt;br /&gt;
 &lt;br /&gt;
 ; host: IP address: Address on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ;host=127.0.0.1 &lt;br /&gt;
 &lt;br /&gt;
 ; port: integer: Port on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ; Note: setting port to 0 will disable the listener, so it will not accept TCP applications&lt;br /&gt;
 ;port=5555&lt;br /&gt;
 &lt;br /&gt;
 ; tcap: string: Name of TCAP to which this TCAP user should attach itself to for the SS7 communication&lt;br /&gt;
 ;tcap=&lt;br /&gt;
 &lt;br /&gt;
 ; add-encoding: bool: Always add encoding attribute to XML elements for decoded parameters&lt;br /&gt;
 ;add-encoding=default from [general]&lt;br /&gt;
 &lt;br /&gt;
 ; add-timestamp: bool: Add to XML timestamps used for estimating application latency&lt;br /&gt;
 ;add-timestamp=default from [general] &lt;br /&gt;
 &lt;br /&gt;
 ; print-messages: bool: Debug option to print TCAP and XML messages. This option is applicable on reload.&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-string: string: Specifies what the ussd-String parameter will contain as data&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - octets: ussd-String will contain the octets as they were received&lt;br /&gt;
 ;  - text: ussd-String will contain the GSM7Bit decoded text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-string=text&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-decode: string: Specifies what ussd-String parameters should be decoded into text&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - none: ussd-String parameters will never be decoded into text&lt;br /&gt;
 ;  - first: ussd-String in a TCAP Begin message will be decoded into text&lt;br /&gt;
 ;  - all: all ussd-String parameters will be decoded into text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-decode=all&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for mapping of TCAP transactions to applications&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For load sharing (especially in cases of high loads), you can configure multiple applications using the same translator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 applications acting as a gsmSCF, each one attached to the TCAP instance with gsmSCF SSN, and 2 applications as HLR, each one attached to the TCAP instance with HLR SSN 6:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 track_id=ussdgw&lt;br /&gt;
 track_id_base=ussdgw/&lt;br /&gt;
 &lt;br /&gt;
 [tcap scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-scf                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false                                                                                                                           &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-hlr                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false   &lt;br /&gt;
 &lt;br /&gt;
 [local ussdscf1]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all                                                                                                                            &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [local ussdscf2]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all               &lt;br /&gt;
 &lt;br /&gt;
 [local ussdhlr1]&lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all                                                                                                                            &lt;br /&gt;
 &lt;br /&gt;
 [local ussdhlr2]                                                                                                                             &lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all&lt;br /&gt;
&lt;br /&gt;
'''Note''' If SMPP is configured to expect decoded USSD texts (which is the default configuration), the ''ussd-decode'' configuration setting should be set to ''all''.&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
The module is configured through ''ussd_map.conf''. The configuration file sets timeout parameters and processing threads parameters in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList for keeping dialogs&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
 &lt;br /&gt;
 ; component_ttl: integer: Component time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; Defaults to 600000 (10 minutes)&lt;br /&gt;
 ;component_ttl=600000&lt;br /&gt;
 &lt;br /&gt;
 ; dialog_idle_ttl: integer: Dialog idle (nothing sent/received) time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; It can be set to 0 to keep it alive until the remote party terminates the dialog&lt;br /&gt;
 ; Defaults to 86400000 (1 day)&lt;br /&gt;
 ;dialog_idle_ttl=86400000&lt;br /&gt;
&lt;br /&gt;
 ; dialog_ended_ttl: integer: Ended dialog time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000.&lt;br /&gt;
 ; It can be set to 0 to remove the dialog after termination&lt;br /&gt;
 ; Defaults to 0&lt;br /&gt;
 ;dialog_ended_ttl=0&lt;br /&gt;
 &lt;br /&gt;
 ; dispatcher_maxthreads: integer: Maximum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ; NOTE: if the value is set to 0, the module will enqueue the messages into YATE's engine.&lt;br /&gt;
 ;dispatcher_maxthreads=0&lt;br /&gt;
&lt;br /&gt;
 ; dispatcher_minthreads: integer: Minimum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ;dispatcher_minthreads=1&lt;br /&gt;
&lt;br /&gt;
 ;dispatcher_priority: string: Default priority of message dispatch threads&lt;br /&gt;
 ;dispatcher_priority=normal&lt;br /&gt;
&lt;br /&gt;
 ; floodevents: integer: Threshold for signaling congestion when the number of messages waiting to be dispatched exceeds it.&lt;br /&gt;
 ; When entering congestion, all new MAP dialogs and USSD sessions will be refused.&lt;br /&gt;
 ; 0 disables the mechanism&lt;br /&gt;
 ;floodevents=0&lt;br /&gt;
&lt;br /&gt;
 ; congestion_exit_factor: double: Factor used to calculate the exit congestion threshold&lt;br /&gt;
 ; NOTE: if the factor results in a exit congestion threshold of 0 or greater than floodevents, &lt;br /&gt;
 ; the setting will be overriden and the exit congestion threshold will be set to 1.&lt;br /&gt;
 ;congestion_exit_factor=0.5&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Timeout settings should be correlated with timeout settings in TCAP and SMPP, each having its own timeout mechanism.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gateway applications which do the MAP &amp;lt;-&amp;gt; USSD translation are configured through section like the one below:&lt;br /&gt;
&lt;br /&gt;
 [appName]&lt;br /&gt;
 ; section name is the name of the camel_map application, it must correspond to a [local appName] section in camel_map &lt;br /&gt;
&lt;br /&gt;
 ; enable: boolean: Enable this application&lt;br /&gt;
 ; Defaults to yes&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of MAP &amp;lt;-&amp;gt; USSD translator: &lt;br /&gt;
 ;  - SCF means that is the part that receives new dialogs from the HLR (user initiated USSD)&lt;br /&gt;
 ;  - HLR is the part that receives new dialogs from gsmSCF (network initiated USSD)&lt;br /&gt;
 ; This setting cannot be changed on reload.&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into &lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; print_msg: boolean: Print sent/received messages to output&lt;br /&gt;
 ;print_msg=no&lt;br /&gt;
  &lt;br /&gt;
 ; print_xml: boolean: Print sent/received XML data to output&lt;br /&gt;
 ;print_xml=no&lt;br /&gt;
 &lt;br /&gt;
 ; local_addr. : prefix: Parameters prefixed with this set the local SCCP address of this application &lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; local_addr.CallingPartyAddress.route=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.ssn=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.pointcode=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.nature=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.plan=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.translation=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.encoding= &lt;br /&gt;
 &lt;br /&gt;
 ; default_routing: bool : Do routing to default address for all messages&lt;br /&gt;
 ; default_routing=no&lt;br /&gt;
 &lt;br /&gt;
 ; default_addr. : prefix: parameters prefixed with this will be used as the default SCCP called address&lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; default_addr.application=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.route=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.ssn=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.pointcode=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.nature=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.translation=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.encoding=&lt;br /&gt;
 &lt;br /&gt;
 ; hlr_ssn: integer: The SSN expected in the calling address from a HLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;hlr_ssn=6&lt;br /&gt;
 &lt;br /&gt;
 ; vlr_ssn: integer: The SSN expected in the calling address from a VLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;vlr_ssn=7&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each section should have its own equivalent in ''camel_map.conf''.&lt;br /&gt;
In the USSD GW scenario, at least tho applications are needed, one acting as SCF, one as HLR. For load sharing multiple gsmSCF and HLR applications can be configured (see the configuration example below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 gsmSCF applications and 2 HLR applications, each one corresponding with a application section in the ''camel_map.conf'' example:&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 component_ttl=600000                                                                                                                         &lt;br /&gt;
 dialog_ended_ttl=0                                                                                                                           &lt;br /&gt;
 dispatcher_maxthreads=10                                                                                                                     &lt;br /&gt;
 dispatcher_minthreads=5                                                                                                                      &lt;br /&gt;
 ;dispatcher_priority=normal                                                                                                                  &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [ussdscf1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
&lt;br /&gt;
 [ussdscf2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
 &lt;br /&gt;
 [ussdhlr1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                         &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd                                                                                              &lt;br /&gt;
                                                   &lt;br /&gt;
 [ussdhlr2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
TODO - configuration explanations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''NOTE''' The module encodes text to ASCII for default encoding (configuration parameter ''default_encoding_type''). If you want to send GSM 7 Bit for SMPP default encoding, please see how the setting is set below.&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example''''&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
 server=smpp-server                                                                                                                           &lt;br /&gt;
 track_id=ussdgw                                                                                                                              &lt;br /&gt;
 track_id_base=ussdgw/                                                                                                                        &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [smpp-server]                                                                                                                                &lt;br /&gt;
 enable=true                                                                                                                                  &lt;br /&gt;
 session_responseinterval=600000                                                                                                              &lt;br /&gt;
 sessionset_process_max=1                                                                                                                     &lt;br /&gt;
 codec_warndefaults=false                                                                                                                     &lt;br /&gt;
 print-messages=no                                                                                                                            &lt;br /&gt;
                                                                                                                                            &lt;br /&gt;
 [listenerserver server]                                                                                                                      &lt;br /&gt;
 ;enable=yes                                                                                                                                  &lt;br /&gt;
 addr=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=12345&lt;br /&gt;
 ; use GSM 7 Bit for default SMPP encoding&lt;br /&gt;
 default_encoding_type=gsm7bit&lt;br /&gt;
&lt;br /&gt;
=== Monitoring ===&lt;br /&gt;
&lt;br /&gt;
This section details comands through which the state of the USSD GW can be monitored.&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
* '''Congestion state monitoring'''&lt;br /&gt;
&lt;br /&gt;
The ''ussd_map'' module will generate an alarm when entering/exiting a congestion state. If SNMP support is enabled, this will generate a trap on SNMP.&lt;br /&gt;
The congestion status is also reported in the ''state'' entry in the result of the module status command.&lt;br /&gt;
&lt;br /&gt;
* '''Module status'''&lt;br /&gt;
&lt;br /&gt;
The module reports its status through the following command in the YATE telnet console:&lt;br /&gt;
&lt;br /&gt;
 status ussd_map&lt;br /&gt;
&lt;br /&gt;
The command will print the following information:&lt;br /&gt;
&lt;br /&gt;
 workers=count_of_dispatching_threads,messages=count_msg,dialogs=count_of_dialogs,state=normal,count=count_of_applications;format=Type | CurrentDlgs| MAPCreated | UssdCreated |DefaultRouted | MAPSent | MapRecv | USSDSent | USSDRecv | MAPAbort | USSDAbort | BuiltAbort | MAPTimeouts | USSDTimeouts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
* workers: current number of used dispatching threads from the maximum configured pool (e.g., 3/10 means 3 threads are used of a pool of 10)&lt;br /&gt;
* messages: count of messages waiting on the dispatching queue of the engine&lt;br /&gt;
* dialogs: total number of USSD sessions currently handled by all applications&lt;br /&gt;
* state of the engine: normal/congestion&lt;br /&gt;
* count: number of applications acting either as gsmSCF, either as HLR&lt;br /&gt;
* format: name of the application for which the following data is reported:&lt;br /&gt;
** Type: role of the application: SCF (communicates with real HLR), HLR (communicates with real gsmSCF)&lt;br /&gt;
** CurrentDlgs: number of current MAP dialogs handled by this application&lt;br /&gt;
** MAPCreated: number of sessions (dialogs) started by the MAP side&lt;br /&gt;
** UssdCreated: number of sessions (dialogs) started by the SMPP side&lt;br /&gt;
** DefaultRouted: number of dialogs for which failover took place&lt;br /&gt;
** MAPSent: number of MAP messages sent to gsmSCF/HLR. It doesn't count the ones sent via failover routing.&lt;br /&gt;
** MAPRecv: number of MAP messages received from gsmSCF/HLR&lt;br /&gt;
** USSDSent: number of sent ussd.execute/ussd.update/ussd.finalize messages towards the SMPP side.&lt;br /&gt;
** USSDRecv: number of received ussd.execute/ussd.update/usdd.notify messages from SMPP side.&lt;br /&gt;
** MAPAbort: number of dialog aborts generated by MAP side&lt;br /&gt;
** USSDAbort: number of dialog aborts generated by USSD side&lt;br /&gt;
** BuiltAbort: number of dialog aborts generated by the ussd_map module (e.g., not having a ussd.update message processed by anyone will cause ussd_map to generate session abort)&lt;br /&gt;
** MAPTimeouts: number of dialog timeouts generated by MAP side&lt;br /&gt;
** USSDTimeouts: number of timeouts reported by USSD side&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Module control commands'''&lt;br /&gt;
&lt;br /&gt;
The module offers the following control commands through the telnet console:&lt;br /&gt;
* ''control ussd_map appName print-msg [yes|no|verbose]'' : enable printing of received/sent map./ussd./messages.&lt;br /&gt;
* ''control ussd_map appName print-xml [yes|no|verbose]'' : enable printing of received/sent XMLs.&lt;br /&gt;
* ''control ussd_map appName export-xml-as [string|object|both]'' : change the way XML is set in the internal messages&lt;br /&gt;
* ''control ussd_map start_stats'' : begin gathering data for statistics&lt;br /&gt;
* ''control ussd_map stop_stats'' : stop gathering data for statistics&lt;br /&gt;
* ''control usdd_map stats'' : print statistic data per engine and each application in part. Data contains number of MAP messages handled per second, number of USSD messages handled per second, maximum number of current dialogs, number of timeouts and number of aborts.&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
The ysmpp module provides the following options for status command:&lt;br /&gt;
&lt;br /&gt;
'NOTE' the module_name can take the following values: smppserver or smppclient.&lt;br /&gt;
&lt;br /&gt;
* status module_name listeners&lt;br /&gt;
Prints the module listeners status in format: Address|Status|Reason.&lt;br /&gt;
&lt;br /&gt;
* status module_name sessions&lt;br /&gt;
Prints the status of the sessions in format: Id|State|BindMode|SystemId|IpAddress:Port|Congested|Incoming Queue|Outgoing Queue;&lt;br /&gt;
&lt;br /&gt;
** Id: The ID of the SMPP session. Can be used for routing.&lt;br /&gt;
** State: The state of the SMPP session.&lt;br /&gt;
** BindMode: The mode in which the session was bound. (Send/Recv/SendRecv)&lt;br /&gt;
** SystemId: The id with which the session has been authenticated. Can be used in routing.&lt;br /&gt;
** IpAddress:Port: The Ip Address and port of the remote end of the session.&lt;br /&gt;
** Congested: True if this session is in congestion state.&lt;br /&gt;
** Incoming Queue: The number of messages not processed in the incoming queue.&lt;br /&gt;
** Outgoing Queue: The number of messages not processed in the outgoing queue.&lt;br /&gt;
&lt;br /&gt;
*status module_name ussd overview&lt;br /&gt;
Prints the stats of the USSD sessions in format: Total|Active|Average Duration|Total Sent|Total Received|AverageTrafficPerSecond|EndedWithErrors|CongestionRefused&lt;br /&gt;
&lt;br /&gt;
** Total: the number of USSD sessions created since the starting of the program.&lt;br /&gt;
** Active: the number of USSD sessions currently active.&lt;br /&gt;
** Average Duration: average duration of a ussd session.&lt;br /&gt;
** Total Sent: total number of SMPP messages sent for USSD sessions.&lt;br /&gt;
** Total Received: total number of SMPP messages received for USSD sessions.&lt;br /&gt;
** AverageTrafficPerSecond: average traffic per second for USSD sessions.&lt;br /&gt;
** EndedWithErrors: the number of USSD sessions that ended with error.&lt;br /&gt;
** CongestionRefused: the number of USSD sessions refused because the server was overloaded.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* Mobile Application Part (MAP) specification: ETSI TE 129 002&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/USSD_GW</id>
		<title>USSD GW</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/USSD_GW"/>
				<updated>2014-11-11T10:21:26Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: /* ussd.finalize */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an implementation an USSD gateway acting as a MAP Service Control Function (gsmSCF) and as a HLR at the same time. When communicating with a HLR or VLR, the YATE USSD GW acts as a gsmSCF. When communicating with a gsmSCF, the YATE USSDGW acts as a HLR.&lt;br /&gt;
The functionality of the USSD GW allows:&lt;br /&gt;
* redirecting of USSD requests arriving either from user side or gsmSCF side to a SMPP client where they can be altered.&lt;br /&gt;
* acting as a proxy for requests that need not be handled by SMPP clients or when the SMPP handling fails&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MAP USSD description ==&lt;br /&gt;
&lt;br /&gt;
In versions 2 and 3 of the GSM MAP protocol there are 3 operations used for USSD operations:&lt;br /&gt;
* processUnstructedSS-Request&lt;br /&gt;
* unstructuredSS-Request&lt;br /&gt;
* unstrusturedSS-Notify&lt;br /&gt;
&lt;br /&gt;
The are 2 scenarios for USSD operations:&lt;br /&gt;
* mobile initiated USSD requests&lt;br /&gt;
* network initiated USSD requests&lt;br /&gt;
&lt;br /&gt;
A TCAP dialog used by USSD is always terminated by the network side.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mobile initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobile initiated USSD requests are USSD requests started by the mobile subscriber.  &lt;br /&gt;
&lt;br /&gt;
A USSD request is started when receiving a TCAP BEGIN message containing the ''processUnstructedSS-Request'' Invoke operation. The request can be handled by the VLR, HLR or a gsmSCF. If the VLR does not handle the request, it will transmit it to the HLR. The HLR can either handle it itself or it can transmit it to a gsmSCF for handling.&lt;br /&gt;
&lt;br /&gt;
At this point, the network can either send a response to the request immediately or request additional information. In the first case, the handler of the request will send a TCAP End with ''processUnstructuredSS-Request'' ResultLast containing the result for the request. &lt;br /&gt;
In the latter case, the network will send a TCAP CONTINUE with ''unstructuredSS-Request'' Invoke operation. The response of the mobile subscriber to this request will be passed to the network in a TCAP CONTINUE with ''unstructuredSS-Request'' ResultLast component. At this point, if the network decides that it has enough information for providing the response to the user, it will send a TCAP END with ''processUnstructuredSS-Request'' ResultLast. Otherwise, it can request further information through another ''unstructuredSS-Request'' Invoke operation.&lt;br /&gt;
&lt;br /&gt;
=== Network initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD requests are USSD requests started by the network towards a certain subscriber.&lt;br /&gt;
&lt;br /&gt;
Requests made by the network can be of one of two types:&lt;br /&gt;
* user interaction requests&lt;br /&gt;
* network notification requests.&lt;br /&gt;
&lt;br /&gt;
User interaction requests are USSD requests that the network makes in which it requires some type of information back from the mobile subscriber. These are started by the network through a TCAP BEGIN containing an ''unstructuredSS-Request'' Invoke. The answer from the mobile subscriber will be received in a TCAP CONTINUE containing an ''unstructuredSS-Request'' ResultLast. If the network still wants to request further information from the user it can send another ''unstructuredSS-Request'' Invoke in a TCAP CONTINUE and wait for the answer. Once the network obtains all needed information, but wants (for user friendliness) to notify the user about the result of the operations, it can send: &lt;br /&gt;
* a TCAP CONTINUE containing a ''unstructuredSS-Notify'' Invoke. When the user side respond with a TCAP CONTINUE containing an empty ''unstructuredSS-Notify'', the network can close the dialog through a TCAP END&lt;br /&gt;
* if the network is not interested in the outcome of ''unstructuredSS-Notify'' Invoke operation, it can send a TCAP END containing  ''unstructuredSS-Notify'' invoke.&lt;br /&gt;
If there is nothing to notify to the user, the network can send a TCAP END to close the TCAP dialog.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network notification requests are USSD requests in which the network only sends a notification to the user. This is achieved by sending a TCAP BEGIN message containing a ''unstructuredSS-Notify'' Invoke. The mobile subscriber side will only respond with a TCAP CONTINUE containing an empty ''unstructuredSS-Notify'' in order to signal that the notification was received. The network will close the TCAP dialog through TCAP END.&lt;br /&gt;
&lt;br /&gt;
=== MAP USSD parameters ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following list describe common parameters used across all MAP USSD operations:&lt;br /&gt;
* ''destinationReference'': this parameter will contain either an MSISDN or an IMSI. In the case of mobile originated USSD request, this will identify the user which made the request. In the case of network initiated requests, it will identify the mobile user to be contacted for this request.&lt;br /&gt;
* ''ussd-String'': for ''processUnstructuredSS-Request'' Invoke it contains the dialed USSD code, for the result it would probably contain a message from the network detailing the result of the request. For ''unstructuredSS-Request'' Invoke it will contain a message asking for the user to choose some option and for the result it will contain the option chosen by the user. In the case of ''unstructuredSS-Notify'', this parameter will only be present in the Invoke.&lt;br /&gt;
* ''ussd-DataCodingScheme'': this is a parameter which specifies in which way the ''ussd-String'' parameter is encoded and it is present whenever ''ussd-String'' is present. E.g., this parameter would indicate if the ''ussd-String'' is encoded using GSM7bit encoding or UCS2.&lt;br /&gt;
&lt;br /&gt;
== SMPP USSD description ==&lt;br /&gt;
&lt;br /&gt;
'''TO DO'''&lt;br /&gt;
&lt;br /&gt;
== System description ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== System design ===&lt;br /&gt;
&lt;br /&gt;
In order to provide the specified functionality, the system makes use of the following YATE components:&lt;br /&gt;
* the SS7 stack  present in YATE &lt;br /&gt;
* the camel_map module which decodes/encodes MAP messages coming from the SS7 network to/from internal YATE messages containing MAP operations in XML form. Together with the SS7 layer this provides MAP connectivity with HLR/gsmSCF.&lt;br /&gt;
* the ussd_map module which takes internal MAP messsages decoded by the camel_map moduled and translates them to internal USSD messages. This module acts as gsmSCF towards a HLR and as a HLR towards a gsmSCF.&lt;br /&gt;
* the SMPP stack present in YATE (ysmpp module) which is able to catch internal USSD messages and transmit them over SMPP. It also translates SMPP messages into internal USSD messages.&lt;br /&gt;
* requests for new USSD sessions will go through routing to decide who should handle the request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following sections detail the behaviour of the system in the different USSD scenarios.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mobile originated USSD handling ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A user initiated USSD session is handled according to the following schema:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# HLR sends a ''processUnstructuredSS-Request (Invoke)'' for code *100#. camel_map decodes the ''ussd-String'' into ''ussd-Text=*100#''.&lt;br /&gt;
# the ussd_map module (gsmSCF side) processes the request received from the HLR and emits a ''call.route'' message with ''called=*100#''.&lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with the ''callto'' parameter set to the value returned from routing. ussd_map dispatches the ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will send  it to the target specified in ''callto'' parameter after the module prefix ''ysmppserver/''.&lt;br /&gt;
# The ysmpp module receives and process the received ''submit_sm'' message.&lt;br /&gt;
# The ysmpp module will send a ''call.route'' message with the ''called=*100#''.&lt;br /&gt;
# The ysmpp module emits a ''ussd.execute'' message with ''callto=retvalue from call.route'' message.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ussd.execute message and if it is the target of the message, meaning that ''callto'' starts with ''ussd_map/''. From that message it will build a map.message that it will send to the gsmSCF as a ''processUnstructuresSS-Request (Invoke)'' MAP message.&amp;lt;br&amp;gt;'''NOTE:''' From here on, the gsmSCF could handle the request in one of  two distinguished cases: one where the gsmSCF requires interaction with the mobile subscriber and one where the gsmSCF just needs to respond to the user request. The following steps detail the former case.&amp;lt;br&amp;gt;&lt;br /&gt;
# gsmSCF sends an ''unstructuredSS-Request (Invoke)'' to  request further information.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits an ''ussd.update'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.update'' message and confirms to the SMPP client that the message sent in step 5 was processed.&lt;br /&gt;
# The SMPP client should confirm the processing of the SMPP message sent in step 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver_sm'' message to the SMPP client with the menu received in ''ussd.update'' message.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message with the received menu.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message from SMPP client and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.update'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time in which the mobile subscribers responds can be quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway when receiving the response from the mobile subscriber.&lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 13.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 21.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 9 and 24 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''processUnstructuredSS-Request (ResultLast)''  for the initial user request.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''processUnstructuredSS-Request (ResultLast)'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 22 or 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 21 or 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 31.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 29.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''processUnstructuredSS-Request (ResultLast)''.&lt;br /&gt;
&lt;br /&gt;
==== Network initiated USSD Request ====&lt;br /&gt;
&lt;br /&gt;
A network initiated USSD session is handled as described in the following figure:&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
# gsmSCF sends''unstructuredSS-Request (Invoke)'' to USSD Gateway (HLR part) to present a menu for MSISDN 0015559191.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits a ''call.route'' message with called=0015559191. &lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with ''callto'' set to the route returned in the return value of the ''call.route'' message and dispatches an ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will then send to the target specified in the ''callto'&amp;quot; parameter after the ''ysmppserver'' module prefix.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message towards SMPP server.&lt;br /&gt;
# The SMPP server processes the received ''submit_sm'' message and dispatches a ''call.route'' message.&lt;br /&gt;
# After successfully dispatching of ''call.route'' message the SMPP server will dispatch a ''call.execute'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.execute'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time to receiving a response from the user after gsmSCF has requested user interaction could be possibly quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway &lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 4.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 13.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 1 and 16 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''TCAP END'' in order to finish the USSD session.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''TCAP END'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 13.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 22.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 21.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''END''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fallback/Proxy mode ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following images detail scenarios where the USSD GW is instructed to do failover.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when an HLR sends ''processUnstructuredSS-Request (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:''' &lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message. &lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD session fallback.&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when a gsmSCF sends a &amp;quot;unstructuredSS-Request/unstructuredSS-Notify (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:'''&lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message.&lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The SMPP USSD gateway will also be bypassed when the ''ussd_map'' module is configured to do failover for all requests.&lt;br /&gt;
&lt;br /&gt;
Any type of SMPP error received either in the result for the ''ussd.execute'' or in the first message back from SMPP that does not have a mapping on MAP will lead to the ''ussd_map'' module doing failover. Errors that would generate a failover are errors like timeout, session ended abnormally, unknown errors, congestion errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once ''ussd_map'' decides that failover should be done, it will use the original received message  from the HLR (MO case)/gsmSCF (MT case) and it will only alter the called address to be the one of the gsmSCF/HLR set for the failover.. The calling address will remain the one received from HLR/gsmSCF, the idea being that for the first message we want to pretend that we are the original gsmSCF/HLR. When the receiving end of this message will want to respond, it will use the calling address from the message. Seeing that the ''ussd_map'' module set it to the original calller's address, further messages exchanged in that dialog between HLR and gsmSCF will not pass through USSD GW again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Internal message API ====&lt;br /&gt;
&lt;br /&gt;
This section documents the YATE messages used internally by the USSD GW.&lt;br /&gt;
&lt;br /&gt;
===== call.route =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used by ussd_map and ysmpp module to determine a destination where a new USSD session should be sent for further processing.&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module when receiving a request for a new USSD session on MAP for ''ussd_map'' or on SMPP for ''ysmpp''.&lt;br /&gt;
''ussd_map'' will only send this message if default routing is not enabled from configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
* module&lt;br /&gt;
** type: string &lt;br /&gt;
** Name of the module which requested routing&lt;br /&gt;
* application&lt;br /&gt;
** type: string&lt;br /&gt;
** Name of the ussd_map application which sent this routing request&lt;br /&gt;
* route_type&lt;br /&gt;
** type: keyword, value: ussd &lt;br /&gt;
** Specifies routing type, in this case it'll be USSD routing&lt;br /&gt;
* smpp_session_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
* smpp_system_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* if the message was processed, the return value of the message indicates the destination of the subsequent ''ussd.execute'' message.&lt;br /&gt;
* if the message was not processed or it returned with error (signaled by the return value being either &amp;quot;-&amp;quot; or &amp;quot;error&amp;quot;)&lt;br /&gt;
** ''ussd_map'' will do failover&lt;br /&gt;
** ysmpp will close the SMPP session, indicating an error either set by the call.route or either set to the default unknown error indication.&lt;br /&gt;
&lt;br /&gt;
===== ussd.execute =====&lt;br /&gt;
&lt;br /&gt;
This message is used to begin a new USSD session:&lt;br /&gt;
* on SMPP, if the message is directed to the ''ysmpp'' module&lt;br /&gt;
* on MAP if the message is directed to the ''ussd_map'' module&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module after successful routing stage. In case of the ''ussd_map'' module, this is message is sent if the routing stage did not indicate failover necessity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* callto:  &lt;br /&gt;
** type : string&lt;br /&gt;
** It specifies the target module to process the message. The string should start with  'ysmppserver/' for the  ''ysmpp&amp;quot; module and with ''ussd_map/'' for the ''ussd_map'' module.&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
** Set to false for UCS2 encoding without language indication&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier assigned for this USSD session by the entity that processed this message.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error returned if the message was not processed.&lt;br /&gt;
&lt;br /&gt;
Processing of this message will return failure:&lt;br /&gt;
* if the message will not be processed&lt;br /&gt;
* if the 'id' parameter is missing.&lt;br /&gt;
* in case of processing error &lt;br /&gt;
* in case of congestion&lt;br /&gt;
&lt;br /&gt;
===== ussd.update =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used for transmitting USSD messages during a USSD session. This type of message will be used after the initial stage of creating the session through ''ussd.execute'' has succeeded.&lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP CONTINUE message &lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
** Set to false for UCS2 encoding without language indication&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will be refused if it is received after a ''ussd.finalize'' message.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a values not allowed in the context of the USSD session (e.g., sending a ''processUnstructuredSS-Request inside a ''ussd.update'' message)&lt;br /&gt;
&lt;br /&gt;
===== ussd.finalize =====&lt;br /&gt;
&lt;br /&gt;
This message is used to signal the termination of the USSD session. Successful processing of this message means that the USSD session was terminated and is no longer available. &lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP END/ABORT message depending upon the parameters received. A message containing an error that does not map to a MAP error will generate a TCAP ABORT.&lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client, a message that will usually contain a last message indication.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
** Set to false for UCS2 encoding without language indication&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by 'peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a value not allowed in the context of the USSD session&lt;br /&gt;
&lt;br /&gt;
===== Keyword values =====&lt;br /&gt;
&lt;br /&gt;
This section details acceptable values for parameters listed as having type ''keyword''.&lt;br /&gt;
&lt;br /&gt;
* '''hlr.nature/vlr.nature/gsmscf.nature/destination_reference.nature'''&lt;br /&gt;
** unknown&lt;br /&gt;
** international&lt;br /&gt;
** national&lt;br /&gt;
** network-specific&lt;br /&gt;
** subscriber&lt;br /&gt;
** abbreviated&lt;br /&gt;
&lt;br /&gt;
* '''hlr.plan/vlr.plan/gsmscf.plan/destination_reference.plan'''&lt;br /&gt;
** unknown&lt;br /&gt;
** isdn&lt;br /&gt;
** data&lt;br /&gt;
** telex&lt;br /&gt;
** land-mobile&lt;br /&gt;
** national&lt;br /&gt;
** private&lt;br /&gt;
&lt;br /&gt;
* '''operation_type'''&lt;br /&gt;
** pssd: mapping of MAP v1 USSD operation ''processUnstructuredSS-Data'' and of SMPP operation ''PSSD''. &lt;br /&gt;
** pssr: mapping of MAP v2 USSD operation ''processUnstructuredSS-Request'' and of SMPP operation ''PSSR''.&lt;br /&gt;
** ussr: mapping of MAP v2 USSD operation ''unstructuredSS-Request'' and of SMPP operation ''USSR&amp;quot;.&lt;br /&gt;
** ussn: mapping of MAP v2 USSD operation ''unstructuredSS-Notify'' and of SMPP operation ''USSN''.&lt;br /&gt;
&lt;br /&gt;
* '''error'''&lt;br /&gt;
** invalid_logic:  error reported when required processing does not follow USSD rules (e.g., MT request starting with ''processUnstructuredSS-Requests'')&lt;br /&gt;
** system_failure: error mapping for MAP error ''systemFailure''.&lt;br /&gt;
** data_missing: error mapping for  MAP error ''dataMissing''.&lt;br /&gt;
** unexpected_data: error mapping for MAP error ''unexpectedDataValue''.&lt;br /&gt;
** unknown_alphabet: error mapping for MAP error ''unknownAlphabet''.&lt;br /&gt;
** absent_subscriber: error mapping for MAP error ''absentSubscriber''.&lt;br /&gt;
** illegal_subscriber: error mapping for MAP error ''illegalSubscriber''.&lt;br /&gt;
** illegal_equipment: error mapping for MAP error ''illegalEquipment''.&lt;br /&gt;
** ussd_busy: error mapping for MAP error ''ussd-Busy''.&lt;br /&gt;
** call_barred: error mapping for MAP error ''callBarred''.&lt;br /&gt;
** network_failure: error signaling message transmission failure due to  connectivity issues either on the SS7 side or SMPP side.&lt;br /&gt;
** timeout_expired: error signaling a  request timeout occurrence.&lt;br /&gt;
** ussd_sess_end_abnormally: error signaling USSD session termination due to an unknown cause. Mapping for this error implies a TCAP Abort either being generated of received. &lt;br /&gt;
** unknown_error: error specified when there is no available mapping for an errror from SMPP to MAP or vice versa.&lt;br /&gt;
** throttling_error: error signaling that a message failed to be processed due to processing side being in congestion state.&lt;br /&gt;
** protocol_error: SMPP generic error. This error is put whenever there is a SMPP specific error that cannot be mapped into one of the other errors.&lt;br /&gt;
&lt;br /&gt;
* '''text.encoding'''&lt;br /&gt;
** gsm7bit / GSM7Bit: text was encoded/is to be encoded GSM 7 Bit&lt;br /&gt;
** ucs2 / UCS2: text was encoded/is to be encoded UCS 2&lt;br /&gt;
&lt;br /&gt;
* '''text.lang'''&lt;br /&gt;
**  two character string specifying a language according to ISO 639-1 or integer value if mapping is not provided.&lt;br /&gt;
&lt;br /&gt;
==== SMPP custom parameters ====&lt;br /&gt;
&lt;br /&gt;
* 0x1502 =&amp;gt; IMSI;&lt;br /&gt;
* 0x1503 =&amp;gt; VLR Type of Number;&lt;br /&gt;
* 0x1504 =&amp;gt; VLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1505 =&amp;gt; VLR address;&lt;br /&gt;
* 0x1506 =&amp;gt; GSM SCF Type of Number;&lt;br /&gt;
* 0x1507 =&amp;gt; GSM SCF Numbering Plan Indicator;&lt;br /&gt;
* 0x1508 =&amp;gt; GSM_SCF address;&lt;br /&gt;
* 0x1509 =&amp;gt; Destination Reference Type of Number;&lt;br /&gt;
* 0x150a =&amp;gt; Destination Reference Numbering Plan Indicator;&lt;br /&gt;
* 0x150b =&amp;gt; Destination Reference;&lt;br /&gt;
* 0x150c =&amp;gt; MSISDN&lt;br /&gt;
* 0x150d =&amp;gt; Alerting Pattern&lt;br /&gt;
* 0x1800 =&amp;gt; HLR Type of Number;&lt;br /&gt;
* 0x1801 =&amp;gt; HLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1802 =&amp;gt; HLR address.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
==== ysigchan module ====&lt;br /&gt;
&lt;br /&gt;
In order to have MAP connectivity, TCAP instances must be configured in ''ysigchan.conf'': &lt;br /&gt;
&lt;br /&gt;
 ; Example of a SS7 Transaction Capabilities Application Part&lt;br /&gt;
 ; This component is created when encountering a section of this kind&lt;br /&gt;
 ;[ss7tcap]&lt;br /&gt;
 ; type: keyword: identifies the component as a SS7 Transfer Capabilities Application Part&lt;br /&gt;
 ; type = ss7-tcap-ansi for ANSI TCAP&lt;br /&gt;
 ; type = ss7-tcap-itu for ITU TCAP&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; local_SSN: local SubSystem Number. Mandatory&lt;br /&gt;
 ;local_SSN=&lt;br /&gt;
 &lt;br /&gt;
 ; default_remote_SSN: remote SubSystem Number to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_SSN=&lt;br /&gt;
  &lt;br /&gt;
 ; default_remote_pointcode: remote Point Code to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_pointcode=&lt;br /&gt;
 &lt;br /&gt;
 ; pointcodetype: remote Point Code type. See above documentation for available types&lt;br /&gt;
 ;pointcodetype=&lt;br /&gt;
 &lt;br /&gt;
 ; sccp: Name of the SCCP component to create and be used by this TCAP&lt;br /&gt;
 ; A section with the name given here must exist in order to configure the SCCP level&lt;br /&gt;
 ;sccp=&lt;br /&gt;
 &lt;br /&gt;
 ; default_hopcounter: HopCounter provided to SCCP if the application does not provide one&lt;br /&gt;
 ; Values range 1-15, 0 or boolean false disables, boolean true sets to 15&lt;br /&gt;
 ; A non-zero value will force using XUDT or LUDT instead of UDT messages&lt;br /&gt;
 ;default_hopcounter=false&lt;br /&gt;
 &lt;br /&gt;
 ; transact_timeout: Time in seconds to timeout a TCAP transaction after no more activity was registered on it&lt;br /&gt;
 ; NOTE: Values below 15 seconds will be ignored and the timer will assume the default value.&lt;br /&gt;
 ; Defaults to 300 seconds&lt;br /&gt;
 ;transact_timeout=300&lt;br /&gt;
 &lt;br /&gt;
 ; max_timeout_checks: integer: Maximum number of timeout checks done on a transaction without starting the transaction&lt;br /&gt;
 ;  timer before forcefully starting the transaction timer&lt;br /&gt;
 ; Defaults to 10&lt;br /&gt;
 ;max_timeout_checks=10 &lt;br /&gt;
 &lt;br /&gt;
 ; timeout_check: Time interval in milliseconds to check for timeouts.&lt;br /&gt;
 ; Default to 100 ms&lt;br /&gt;
 ;timeout_check=100 &lt;br /&gt;
 &lt;br /&gt;
 ; floodevents: int: How many queued incoming TCAP messages trigger a congestion warning and the drop mechanism&lt;br /&gt;
 ;  for Unidirectional/Begin/QueryWithPermission/QueryWithoutPermission messages.&lt;br /&gt;
 ;  Exit from congestion will take place when there are less the floodevents/4 messages in the queue&lt;br /&gt;
 ; NOTE! Setting this parameter to 0 will disable the congestion warning and protection. Setting it to one will &lt;br /&gt;
 ;  be overriden and floodevents will be set to 2.&lt;br /&gt;
 ;floodevents=1000&lt;br /&gt;
 &lt;br /&gt;
 ;print-messages: Boolean to enable/disable printing of decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ;extended-debug: Boolean to enable/disable printing of the step-by-step decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload. print-messages must be true.&lt;br /&gt;
 ;extended-debug=false&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for keeping the list of current transactions&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
 [tcap-scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=147                                                                                                                                &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                     &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap-hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=7                                                                                                                                  &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Further configuration for SS7 connectivity is required (SCCP, MTP3, etc.).&lt;br /&gt;
&lt;br /&gt;
==== camel_map module ====&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': As of SVN revision 1285, there is a new ''camelmap'' module. For compatibility reasons, the old module, ''camel_map'', was also kept. Both modules read the same configuration file, ''camel_map.conf''. In order to avoid issues, please make sure to only enable one of these modules in the ''[postload]'' section of ''yate.conf''.&lt;br /&gt;
&lt;br /&gt;
The new module is the one that offers USSD UCS2 encoding without language indication, but beware that TCP functionality has been removed from it. That functionality has been moved to the ''xml_tcp'' module. The module only uses messages to communicate with applications. ''ussd_map'' uses messages, so there should be no need for TCP functionality.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configuring of tracking IDs is done in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ;track_id: string: Shared engine variable name used to obtain a unique tracking ID for TCAP transactions&lt;br /&gt;
 ; If not set, the module will not set a tracking ID for the TCAP transaction&lt;br /&gt;
 ;track_id=&lt;br /&gt;
 &lt;br /&gt;
 ;track_id_base: string: Optional string with which to prefix the tracking ID&lt;br /&gt;
 ; This setting has no effect if track_id is not set&lt;br /&gt;
 ;track_id_base=&lt;br /&gt;
&lt;br /&gt;
In order to allow communication over MAP through SS7, sections configurating application should exist for each role of the ussd_map module (gsmSCF/HLR). A ''camel_map.conf'' section configuring an application looks like this:&lt;br /&gt;
 &lt;br /&gt;
 ;[local appName]&lt;br /&gt;
 ; This section configures a local application which transmits the XML messages as internal Yate messages&lt;br /&gt;
 &lt;br /&gt;
 ; translator: string: name of translator to be used by this application.&lt;br /&gt;
 ; Must be one one the [tcap ...] sections configured in the camel_map.conf file.&lt;br /&gt;
 ;translator=&lt;br /&gt;
  &lt;br /&gt;
 ; capabilities: string: List of capabilities separated by commas which this application supports&lt;br /&gt;
 ;capabilities=&lt;br /&gt;
  &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into a Yate message&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - string: pass the XML as a string&lt;br /&gt;
 ;  - object: pass the XML as an object&lt;br /&gt;
 ;  - both: pass the XML as a string and object&lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; enable: bool: Enable this application&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
&lt;br /&gt;
The translator setting refers to a section of the type defined below which configures atachement to a TCAP instance&lt;br /&gt;
&lt;br /&gt;
 ;[tcap map]&lt;br /&gt;
 ; This section configures a TCAP User MAP/CAMEL protocol translator&lt;br /&gt;
 &lt;br /&gt;
 ; enable: bool: Enable this translator&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of TCAP User &lt;br /&gt;
 ; Allowed values are MAP or CAMEL&lt;br /&gt;
 ;type=MAP&lt;br /&gt;
 &lt;br /&gt;
 ; host: IP address: Address on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ;host=127.0.0.1 &lt;br /&gt;
 &lt;br /&gt;
 ; port: integer: Port on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ; Note: setting port to 0 will disable the listener, so it will not accept TCP applications&lt;br /&gt;
 ;port=5555&lt;br /&gt;
 &lt;br /&gt;
 ; tcap: string: Name of TCAP to which this TCAP user should attach itself to for the SS7 communication&lt;br /&gt;
 ;tcap=&lt;br /&gt;
 &lt;br /&gt;
 ; add-encoding: bool: Always add encoding attribute to XML elements for decoded parameters&lt;br /&gt;
 ;add-encoding=default from [general]&lt;br /&gt;
 &lt;br /&gt;
 ; add-timestamp: bool: Add to XML timestamps used for estimating application latency&lt;br /&gt;
 ;add-timestamp=default from [general] &lt;br /&gt;
 &lt;br /&gt;
 ; print-messages: bool: Debug option to print TCAP and XML messages. This option is applicable on reload.&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-string: string: Specifies what the ussd-String parameter will contain as data&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - octets: ussd-String will contain the octets as they were received&lt;br /&gt;
 ;  - text: ussd-String will contain the GSM7Bit decoded text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-string=text&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-decode: string: Specifies what ussd-String parameters should be decoded into text&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - none: ussd-String parameters will never be decoded into text&lt;br /&gt;
 ;  - first: ussd-String in a TCAP Begin message will be decoded into text&lt;br /&gt;
 ;  - all: all ussd-String parameters will be decoded into text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-decode=all&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for mapping of TCAP transactions to applications&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For load sharing (especially in cases of high loads), you can configure multiple applications using the same translator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 applications acting as a gsmSCF, each one attached to the TCAP instance with gsmSCF SSN, and 2 applications as HLR, each one attached to the TCAP instance with HLR SSN 6:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 track_id=ussdgw&lt;br /&gt;
 track_id_base=ussdgw/&lt;br /&gt;
 &lt;br /&gt;
 [tcap scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-scf                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false                                                                                                                           &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-hlr                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false   &lt;br /&gt;
 &lt;br /&gt;
 [local ussdscf1]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all                                                                                                                            &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [local ussdscf2]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all               &lt;br /&gt;
 &lt;br /&gt;
 [local ussdhlr1]&lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all                                                                                                                            &lt;br /&gt;
 &lt;br /&gt;
 [local ussdhlr2]                                                                                                                             &lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all&lt;br /&gt;
&lt;br /&gt;
'''Note''' If SMPP is configured to expect decoded USSD texts (which is the default configuration), the ''ussd-decode'' configuration setting should be set to ''all''.&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
The module is configured through ''ussd_map.conf''. The configuration file sets timeout parameters and processing threads parameters in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList for keeping dialogs&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
 &lt;br /&gt;
 ; component_ttl: integer: Component time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; Defaults to 600000 (10 minutes)&lt;br /&gt;
 ;component_ttl=600000&lt;br /&gt;
 &lt;br /&gt;
 ; dialog_idle_ttl: integer: Dialog idle (nothing sent/received) time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; It can be set to 0 to keep it alive until the remote party terminates the dialog&lt;br /&gt;
 ; Defaults to 86400000 (1 day)&lt;br /&gt;
 ;dialog_idle_ttl=86400000&lt;br /&gt;
&lt;br /&gt;
 ; dialog_ended_ttl: integer: Ended dialog time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000.&lt;br /&gt;
 ; It can be set to 0 to remove the dialog after termination&lt;br /&gt;
 ; Defaults to 0&lt;br /&gt;
 ;dialog_ended_ttl=0&lt;br /&gt;
 &lt;br /&gt;
 ; dispatcher_maxthreads: integer: Maximum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ; NOTE: if the value is set to 0, the module will enqueue the messages into YATE's engine.&lt;br /&gt;
 ;dispatcher_maxthreads=0&lt;br /&gt;
&lt;br /&gt;
 ; dispatcher_minthreads: integer: Minimum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ;dispatcher_minthreads=1&lt;br /&gt;
&lt;br /&gt;
 ;dispatcher_priority: string: Default priority of message dispatch threads&lt;br /&gt;
 ;dispatcher_priority=normal&lt;br /&gt;
&lt;br /&gt;
 ; floodevents: integer: Threshold for signaling congestion when the number of messages waiting to be dispatched exceeds it.&lt;br /&gt;
 ; When entering congestion, all new MAP dialogs and USSD sessions will be refused.&lt;br /&gt;
 ; 0 disables the mechanism&lt;br /&gt;
 ;floodevents=0&lt;br /&gt;
&lt;br /&gt;
 ; congestion_exit_factor: double: Factor used to calculate the exit congestion threshold&lt;br /&gt;
 ; NOTE: if the factor results in a exit congestion threshold of 0 or greater than floodevents, &lt;br /&gt;
 ; the setting will be overriden and the exit congestion threshold will be set to 1.&lt;br /&gt;
 ;congestion_exit_factor=0.5&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Timeout settings should be correlated with timeout settings in TCAP and SMPP, each having its own timeout mechanism.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gateway applications which do the MAP &amp;lt;-&amp;gt; USSD translation are configured through section like the one below:&lt;br /&gt;
&lt;br /&gt;
 [appName]&lt;br /&gt;
 ; section name is the name of the camel_map application, it must correspond to a [local appName] section in camel_map &lt;br /&gt;
&lt;br /&gt;
 ; enable: boolean: Enable this application&lt;br /&gt;
 ; Defaults to yes&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of MAP &amp;lt;-&amp;gt; USSD translator: &lt;br /&gt;
 ;  - SCF means that is the part that receives new dialogs from the HLR (user initiated USSD)&lt;br /&gt;
 ;  - HLR is the part that receives new dialogs from gsmSCF (network initiated USSD)&lt;br /&gt;
 ; This setting cannot be changed on reload.&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into &lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; print_msg: boolean: Print sent/received messages to output&lt;br /&gt;
 ;print_msg=no&lt;br /&gt;
  &lt;br /&gt;
 ; print_xml: boolean: Print sent/received XML data to output&lt;br /&gt;
 ;print_xml=no&lt;br /&gt;
 &lt;br /&gt;
 ; local_addr. : prefix: Parameters prefixed with this set the local SCCP address of this application &lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; local_addr.CallingPartyAddress.route=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.ssn=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.pointcode=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.nature=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.plan=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.translation=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.encoding= &lt;br /&gt;
 &lt;br /&gt;
 ; default_routing: bool : Do routing to default address for all messages&lt;br /&gt;
 ; default_routing=no&lt;br /&gt;
 &lt;br /&gt;
 ; default_addr. : prefix: parameters prefixed with this will be used as the default SCCP called address&lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; default_addr.application=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.route=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.ssn=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.pointcode=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.nature=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.translation=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.encoding=&lt;br /&gt;
 &lt;br /&gt;
 ; hlr_ssn: integer: The SSN expected in the calling address from a HLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;hlr_ssn=6&lt;br /&gt;
 &lt;br /&gt;
 ; vlr_ssn: integer: The SSN expected in the calling address from a VLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;vlr_ssn=7&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each section should have its own equivalent in ''camel_map.conf''.&lt;br /&gt;
In the USSD GW scenario, at least tho applications are needed, one acting as SCF, one as HLR. For load sharing multiple gsmSCF and HLR applications can be configured (see the configuration example below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 gsmSCF applications and 2 HLR applications, each one corresponding with a application section in the ''camel_map.conf'' example:&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 component_ttl=600000                                                                                                                         &lt;br /&gt;
 dialog_ended_ttl=0                                                                                                                           &lt;br /&gt;
 dispatcher_maxthreads=10                                                                                                                     &lt;br /&gt;
 dispatcher_minthreads=5                                                                                                                      &lt;br /&gt;
 ;dispatcher_priority=normal                                                                                                                  &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [ussdscf1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
&lt;br /&gt;
 [ussdscf2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
 &lt;br /&gt;
 [ussdhlr1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                         &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd                                                                                              &lt;br /&gt;
                                                   &lt;br /&gt;
 [ussdhlr2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
TODO - configuration explanations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''NOTE''' The module encodes text to ASCII for default encoding (configuration parameter ''default_encoding_type''). If you want to send GSM 7 Bit for SMPP default encoding, please see how the setting is set below.&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example''''&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
 server=smpp-server                                                                                                                           &lt;br /&gt;
 track_id=ussdgw                                                                                                                              &lt;br /&gt;
 track_id_base=ussdgw/                                                                                                                        &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [smpp-server]                                                                                                                                &lt;br /&gt;
 enable=true                                                                                                                                  &lt;br /&gt;
 session_responseinterval=600000                                                                                                              &lt;br /&gt;
 sessionset_process_max=1                                                                                                                     &lt;br /&gt;
 codec_warndefaults=false                                                                                                                     &lt;br /&gt;
 print-messages=no                                                                                                                            &lt;br /&gt;
                                                                                                                                            &lt;br /&gt;
 [listenerserver server]                                                                                                                      &lt;br /&gt;
 ;enable=yes                                                                                                                                  &lt;br /&gt;
 addr=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=12345&lt;br /&gt;
 ; use GSM 7 Bit for default SMPP encoding&lt;br /&gt;
 default_encoding_type=gsm7bit&lt;br /&gt;
&lt;br /&gt;
=== Monitoring ===&lt;br /&gt;
&lt;br /&gt;
This section details comands through which the state of the USSD GW can be monitored.&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
* '''Congestion state monitoring'''&lt;br /&gt;
&lt;br /&gt;
The ''ussd_map'' module will generate an alarm when entering/exiting a congestion state. If SNMP support is enabled, this will generate a trap on SNMP.&lt;br /&gt;
The congestion status is also reported in the ''state'' entry in the result of the module status command.&lt;br /&gt;
&lt;br /&gt;
* '''Module status'''&lt;br /&gt;
&lt;br /&gt;
The module reports its status through the following command in the YATE telnet console:&lt;br /&gt;
&lt;br /&gt;
 status ussd_map&lt;br /&gt;
&lt;br /&gt;
The command will print the following information:&lt;br /&gt;
&lt;br /&gt;
 workers=count_of_dispatching_threads,messages=count_msg,dialogs=count_of_dialogs,state=normal,count=count_of_applications;format=Type | CurrentDlgs| MAPCreated | UssdCreated |DefaultRouted | MAPSent | MapRecv | USSDSent | USSDRecv | MAPAbort | USSDAbort | BuiltAbort | MAPTimeouts | USSDTimeouts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
* workers: current number of used dispatching threads from the maximum configured pool (e.g., 3/10 means 3 threads are used of a pool of 10)&lt;br /&gt;
* messages: count of messages waiting on the dispatching queue of the engine&lt;br /&gt;
* dialogs: total number of USSD sessions currently handled by all applications&lt;br /&gt;
* state of the engine: normal/congestion&lt;br /&gt;
* count: number of applications acting either as gsmSCF, either as HLR&lt;br /&gt;
* format: name of the application for which the following data is reported:&lt;br /&gt;
** Type: role of the application: SCF (communicates with real HLR), HLR (communicates with real gsmSCF)&lt;br /&gt;
** CurrentDlgs: number of current MAP dialogs handled by this application&lt;br /&gt;
** MAPCreated: number of sessions (dialogs) started by the MAP side&lt;br /&gt;
** UssdCreated: number of sessions (dialogs) started by the SMPP side&lt;br /&gt;
** DefaultRouted: number of dialogs for which failover took place&lt;br /&gt;
** MAPSent: number of MAP messages sent to gsmSCF/HLR. It doesn't count the ones sent via failover routing.&lt;br /&gt;
** MAPRecv: number of MAP messages received from gsmSCF/HLR&lt;br /&gt;
** USSDSent: number of sent ussd.execute/ussd.update/ussd.finalize messages towards the SMPP side.&lt;br /&gt;
** USSDRecv: number of received ussd.execute/ussd.update/usdd.notify messages from SMPP side.&lt;br /&gt;
** MAPAbort: number of dialog aborts generated by MAP side&lt;br /&gt;
** USSDAbort: number of dialog aborts generated by USSD side&lt;br /&gt;
** BuiltAbort: number of dialog aborts generated by the ussd_map module (e.g., not having a ussd.update message processed by anyone will cause ussd_map to generate session abort)&lt;br /&gt;
** MAPTimeouts: number of dialog timeouts generated by MAP side&lt;br /&gt;
** USSDTimeouts: number of timeouts reported by USSD side&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Module control commands'''&lt;br /&gt;
&lt;br /&gt;
The module offers the following control commands through the telnet console:&lt;br /&gt;
* ''control ussd_map appName print-msg [yes|no|verbose]'' : enable printing of received/sent map./ussd./messages.&lt;br /&gt;
* ''control ussd_map appName print-xml [yes|no|verbose]'' : enable printing of received/sent XMLs.&lt;br /&gt;
* ''control ussd_map appName export-xml-as [string|object|both]'' : change the way XML is set in the internal messages&lt;br /&gt;
* ''control ussd_map start_stats'' : begin gathering data for statistics&lt;br /&gt;
* ''control ussd_map stop_stats'' : stop gathering data for statistics&lt;br /&gt;
* ''control usdd_map stats'' : print statistic data per engine and each application in part. Data contains number of MAP messages handled per second, number of USSD messages handled per second, maximum number of current dialogs, number of timeouts and number of aborts.&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
The ysmpp module provides the following options for status command:&lt;br /&gt;
&lt;br /&gt;
'NOTE' the module_name can take the following values: smppserver or smppclient.&lt;br /&gt;
&lt;br /&gt;
* status module_name listeners&lt;br /&gt;
Prints the module listeners status in format: Address|Status|Reason.&lt;br /&gt;
&lt;br /&gt;
* status module_name sessions&lt;br /&gt;
Prints the status of the sessions in format: Id|State|BindMode|SystemId|IpAddress:Port|Congested|Incoming Queue|Outgoing Queue;&lt;br /&gt;
&lt;br /&gt;
** Id: The ID of the SMPP session. Can be used for routing.&lt;br /&gt;
** State: The state of the SMPP session.&lt;br /&gt;
** BindMode: The mode in which the session was bound. (Send/Recv/SendRecv)&lt;br /&gt;
** SystemId: The id with which the session has been authenticated. Can be used in routing.&lt;br /&gt;
** IpAddress:Port: The Ip Address and port of the remote end of the session.&lt;br /&gt;
** Congested: True if this session is in congestion state.&lt;br /&gt;
** Incoming Queue: The number of messages not processed in the incoming queue.&lt;br /&gt;
** Outgoing Queue: The number of messages not processed in the outgoing queue.&lt;br /&gt;
&lt;br /&gt;
*status module_name ussd overview&lt;br /&gt;
Prints the stats of the USSD sessions in format: Total|Active|Average Duration|Total Sent|Total Received|AverageTrafficPerSecond|EndedWithErrors|CongestionRefused&lt;br /&gt;
&lt;br /&gt;
** Total: the number of USSD sessions created since the starting of the program.&lt;br /&gt;
** Active: the number of USSD sessions currently active.&lt;br /&gt;
** Average Duration: average duration of a ussd session.&lt;br /&gt;
** Total Sent: total number of SMPP messages sent for USSD sessions.&lt;br /&gt;
** Total Received: total number of SMPP messages received for USSD sessions.&lt;br /&gt;
** AverageTrafficPerSecond: average traffic per second for USSD sessions.&lt;br /&gt;
** EndedWithErrors: the number of USSD sessions that ended with error.&lt;br /&gt;
** CongestionRefused: the number of USSD sessions refused because the server was overloaded.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* Mobile Application Part (MAP) specification: ETSI TE 129 002&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/USSD_GW</id>
		<title>USSD GW</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/USSD_GW"/>
				<updated>2014-11-11T10:20:59Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: /* ussd.update */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an implementation an USSD gateway acting as a MAP Service Control Function (gsmSCF) and as a HLR at the same time. When communicating with a HLR or VLR, the YATE USSD GW acts as a gsmSCF. When communicating with a gsmSCF, the YATE USSDGW acts as a HLR.&lt;br /&gt;
The functionality of the USSD GW allows:&lt;br /&gt;
* redirecting of USSD requests arriving either from user side or gsmSCF side to a SMPP client where they can be altered.&lt;br /&gt;
* acting as a proxy for requests that need not be handled by SMPP clients or when the SMPP handling fails&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MAP USSD description ==&lt;br /&gt;
&lt;br /&gt;
In versions 2 and 3 of the GSM MAP protocol there are 3 operations used for USSD operations:&lt;br /&gt;
* processUnstructedSS-Request&lt;br /&gt;
* unstructuredSS-Request&lt;br /&gt;
* unstrusturedSS-Notify&lt;br /&gt;
&lt;br /&gt;
The are 2 scenarios for USSD operations:&lt;br /&gt;
* mobile initiated USSD requests&lt;br /&gt;
* network initiated USSD requests&lt;br /&gt;
&lt;br /&gt;
A TCAP dialog used by USSD is always terminated by the network side.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mobile initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobile initiated USSD requests are USSD requests started by the mobile subscriber.  &lt;br /&gt;
&lt;br /&gt;
A USSD request is started when receiving a TCAP BEGIN message containing the ''processUnstructedSS-Request'' Invoke operation. The request can be handled by the VLR, HLR or a gsmSCF. If the VLR does not handle the request, it will transmit it to the HLR. The HLR can either handle it itself or it can transmit it to a gsmSCF for handling.&lt;br /&gt;
&lt;br /&gt;
At this point, the network can either send a response to the request immediately or request additional information. In the first case, the handler of the request will send a TCAP End with ''processUnstructuredSS-Request'' ResultLast containing the result for the request. &lt;br /&gt;
In the latter case, the network will send a TCAP CONTINUE with ''unstructuredSS-Request'' Invoke operation. The response of the mobile subscriber to this request will be passed to the network in a TCAP CONTINUE with ''unstructuredSS-Request'' ResultLast component. At this point, if the network decides that it has enough information for providing the response to the user, it will send a TCAP END with ''processUnstructuredSS-Request'' ResultLast. Otherwise, it can request further information through another ''unstructuredSS-Request'' Invoke operation.&lt;br /&gt;
&lt;br /&gt;
=== Network initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD requests are USSD requests started by the network towards a certain subscriber.&lt;br /&gt;
&lt;br /&gt;
Requests made by the network can be of one of two types:&lt;br /&gt;
* user interaction requests&lt;br /&gt;
* network notification requests.&lt;br /&gt;
&lt;br /&gt;
User interaction requests are USSD requests that the network makes in which it requires some type of information back from the mobile subscriber. These are started by the network through a TCAP BEGIN containing an ''unstructuredSS-Request'' Invoke. The answer from the mobile subscriber will be received in a TCAP CONTINUE containing an ''unstructuredSS-Request'' ResultLast. If the network still wants to request further information from the user it can send another ''unstructuredSS-Request'' Invoke in a TCAP CONTINUE and wait for the answer. Once the network obtains all needed information, but wants (for user friendliness) to notify the user about the result of the operations, it can send: &lt;br /&gt;
* a TCAP CONTINUE containing a ''unstructuredSS-Notify'' Invoke. When the user side respond with a TCAP CONTINUE containing an empty ''unstructuredSS-Notify'', the network can close the dialog through a TCAP END&lt;br /&gt;
* if the network is not interested in the outcome of ''unstructuredSS-Notify'' Invoke operation, it can send a TCAP END containing  ''unstructuredSS-Notify'' invoke.&lt;br /&gt;
If there is nothing to notify to the user, the network can send a TCAP END to close the TCAP dialog.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network notification requests are USSD requests in which the network only sends a notification to the user. This is achieved by sending a TCAP BEGIN message containing a ''unstructuredSS-Notify'' Invoke. The mobile subscriber side will only respond with a TCAP CONTINUE containing an empty ''unstructuredSS-Notify'' in order to signal that the notification was received. The network will close the TCAP dialog through TCAP END.&lt;br /&gt;
&lt;br /&gt;
=== MAP USSD parameters ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following list describe common parameters used across all MAP USSD operations:&lt;br /&gt;
* ''destinationReference'': this parameter will contain either an MSISDN or an IMSI. In the case of mobile originated USSD request, this will identify the user which made the request. In the case of network initiated requests, it will identify the mobile user to be contacted for this request.&lt;br /&gt;
* ''ussd-String'': for ''processUnstructuredSS-Request'' Invoke it contains the dialed USSD code, for the result it would probably contain a message from the network detailing the result of the request. For ''unstructuredSS-Request'' Invoke it will contain a message asking for the user to choose some option and for the result it will contain the option chosen by the user. In the case of ''unstructuredSS-Notify'', this parameter will only be present in the Invoke.&lt;br /&gt;
* ''ussd-DataCodingScheme'': this is a parameter which specifies in which way the ''ussd-String'' parameter is encoded and it is present whenever ''ussd-String'' is present. E.g., this parameter would indicate if the ''ussd-String'' is encoded using GSM7bit encoding or UCS2.&lt;br /&gt;
&lt;br /&gt;
== SMPP USSD description ==&lt;br /&gt;
&lt;br /&gt;
'''TO DO'''&lt;br /&gt;
&lt;br /&gt;
== System description ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== System design ===&lt;br /&gt;
&lt;br /&gt;
In order to provide the specified functionality, the system makes use of the following YATE components:&lt;br /&gt;
* the SS7 stack  present in YATE &lt;br /&gt;
* the camel_map module which decodes/encodes MAP messages coming from the SS7 network to/from internal YATE messages containing MAP operations in XML form. Together with the SS7 layer this provides MAP connectivity with HLR/gsmSCF.&lt;br /&gt;
* the ussd_map module which takes internal MAP messsages decoded by the camel_map moduled and translates them to internal USSD messages. This module acts as gsmSCF towards a HLR and as a HLR towards a gsmSCF.&lt;br /&gt;
* the SMPP stack present in YATE (ysmpp module) which is able to catch internal USSD messages and transmit them over SMPP. It also translates SMPP messages into internal USSD messages.&lt;br /&gt;
* requests for new USSD sessions will go through routing to decide who should handle the request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following sections detail the behaviour of the system in the different USSD scenarios.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mobile originated USSD handling ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A user initiated USSD session is handled according to the following schema:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# HLR sends a ''processUnstructuredSS-Request (Invoke)'' for code *100#. camel_map decodes the ''ussd-String'' into ''ussd-Text=*100#''.&lt;br /&gt;
# the ussd_map module (gsmSCF side) processes the request received from the HLR and emits a ''call.route'' message with ''called=*100#''.&lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with the ''callto'' parameter set to the value returned from routing. ussd_map dispatches the ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will send  it to the target specified in ''callto'' parameter after the module prefix ''ysmppserver/''.&lt;br /&gt;
# The ysmpp module receives and process the received ''submit_sm'' message.&lt;br /&gt;
# The ysmpp module will send a ''call.route'' message with the ''called=*100#''.&lt;br /&gt;
# The ysmpp module emits a ''ussd.execute'' message with ''callto=retvalue from call.route'' message.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ussd.execute message and if it is the target of the message, meaning that ''callto'' starts with ''ussd_map/''. From that message it will build a map.message that it will send to the gsmSCF as a ''processUnstructuresSS-Request (Invoke)'' MAP message.&amp;lt;br&amp;gt;'''NOTE:''' From here on, the gsmSCF could handle the request in one of  two distinguished cases: one where the gsmSCF requires interaction with the mobile subscriber and one where the gsmSCF just needs to respond to the user request. The following steps detail the former case.&amp;lt;br&amp;gt;&lt;br /&gt;
# gsmSCF sends an ''unstructuredSS-Request (Invoke)'' to  request further information.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits an ''ussd.update'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.update'' message and confirms to the SMPP client that the message sent in step 5 was processed.&lt;br /&gt;
# The SMPP client should confirm the processing of the SMPP message sent in step 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver_sm'' message to the SMPP client with the menu received in ''ussd.update'' message.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message with the received menu.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message from SMPP client and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.update'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time in which the mobile subscribers responds can be quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway when receiving the response from the mobile subscriber.&lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 13.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 21.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 9 and 24 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''processUnstructuredSS-Request (ResultLast)''  for the initial user request.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''processUnstructuredSS-Request (ResultLast)'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 22 or 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 21 or 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 31.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 29.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''processUnstructuredSS-Request (ResultLast)''.&lt;br /&gt;
&lt;br /&gt;
==== Network initiated USSD Request ====&lt;br /&gt;
&lt;br /&gt;
A network initiated USSD session is handled as described in the following figure:&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
# gsmSCF sends''unstructuredSS-Request (Invoke)'' to USSD Gateway (HLR part) to present a menu for MSISDN 0015559191.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits a ''call.route'' message with called=0015559191. &lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with ''callto'' set to the route returned in the return value of the ''call.route'' message and dispatches an ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will then send to the target specified in the ''callto'&amp;quot; parameter after the ''ysmppserver'' module prefix.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message towards SMPP server.&lt;br /&gt;
# The SMPP server processes the received ''submit_sm'' message and dispatches a ''call.route'' message.&lt;br /&gt;
# After successfully dispatching of ''call.route'' message the SMPP server will dispatch a ''call.execute'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.execute'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time to receiving a response from the user after gsmSCF has requested user interaction could be possibly quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway &lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 4.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 13.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 1 and 16 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''TCAP END'' in order to finish the USSD session.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''TCAP END'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 13.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 22.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 21.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''END''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fallback/Proxy mode ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following images detail scenarios where the USSD GW is instructed to do failover.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when an HLR sends ''processUnstructuredSS-Request (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:''' &lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message. &lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD session fallback.&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when a gsmSCF sends a &amp;quot;unstructuredSS-Request/unstructuredSS-Notify (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:'''&lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message.&lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The SMPP USSD gateway will also be bypassed when the ''ussd_map'' module is configured to do failover for all requests.&lt;br /&gt;
&lt;br /&gt;
Any type of SMPP error received either in the result for the ''ussd.execute'' or in the first message back from SMPP that does not have a mapping on MAP will lead to the ''ussd_map'' module doing failover. Errors that would generate a failover are errors like timeout, session ended abnormally, unknown errors, congestion errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once ''ussd_map'' decides that failover should be done, it will use the original received message  from the HLR (MO case)/gsmSCF (MT case) and it will only alter the called address to be the one of the gsmSCF/HLR set for the failover.. The calling address will remain the one received from HLR/gsmSCF, the idea being that for the first message we want to pretend that we are the original gsmSCF/HLR. When the receiving end of this message will want to respond, it will use the calling address from the message. Seeing that the ''ussd_map'' module set it to the original calller's address, further messages exchanged in that dialog between HLR and gsmSCF will not pass through USSD GW again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Internal message API ====&lt;br /&gt;
&lt;br /&gt;
This section documents the YATE messages used internally by the USSD GW.&lt;br /&gt;
&lt;br /&gt;
===== call.route =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used by ussd_map and ysmpp module to determine a destination where a new USSD session should be sent for further processing.&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module when receiving a request for a new USSD session on MAP for ''ussd_map'' or on SMPP for ''ysmpp''.&lt;br /&gt;
''ussd_map'' will only send this message if default routing is not enabled from configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
* module&lt;br /&gt;
** type: string &lt;br /&gt;
** Name of the module which requested routing&lt;br /&gt;
* application&lt;br /&gt;
** type: string&lt;br /&gt;
** Name of the ussd_map application which sent this routing request&lt;br /&gt;
* route_type&lt;br /&gt;
** type: keyword, value: ussd &lt;br /&gt;
** Specifies routing type, in this case it'll be USSD routing&lt;br /&gt;
* smpp_session_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
* smpp_system_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* if the message was processed, the return value of the message indicates the destination of the subsequent ''ussd.execute'' message.&lt;br /&gt;
* if the message was not processed or it returned with error (signaled by the return value being either &amp;quot;-&amp;quot; or &amp;quot;error&amp;quot;)&lt;br /&gt;
** ''ussd_map'' will do failover&lt;br /&gt;
** ysmpp will close the SMPP session, indicating an error either set by the call.route or either set to the default unknown error indication.&lt;br /&gt;
&lt;br /&gt;
===== ussd.execute =====&lt;br /&gt;
&lt;br /&gt;
This message is used to begin a new USSD session:&lt;br /&gt;
* on SMPP, if the message is directed to the ''ysmpp'' module&lt;br /&gt;
* on MAP if the message is directed to the ''ussd_map'' module&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module after successful routing stage. In case of the ''ussd_map'' module, this is message is sent if the routing stage did not indicate failover necessity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* callto:  &lt;br /&gt;
** type : string&lt;br /&gt;
** It specifies the target module to process the message. The string should start with  'ysmppserver/' for the  ''ysmpp&amp;quot; module and with ''ussd_map/'' for the ''ussd_map'' module.&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
** Set to false for UCS2 encoding without language indication&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier assigned for this USSD session by the entity that processed this message.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error returned if the message was not processed.&lt;br /&gt;
&lt;br /&gt;
Processing of this message will return failure:&lt;br /&gt;
* if the message will not be processed&lt;br /&gt;
* if the 'id' parameter is missing.&lt;br /&gt;
* in case of processing error &lt;br /&gt;
* in case of congestion&lt;br /&gt;
&lt;br /&gt;
===== ussd.update =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used for transmitting USSD messages during a USSD session. This type of message will be used after the initial stage of creating the session through ''ussd.execute'' has succeeded.&lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP CONTINUE message &lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
** Set to false for UCS2 encoding without language indication&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will be refused if it is received after a ''ussd.finalize'' message.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a values not allowed in the context of the USSD session (e.g., sending a ''processUnstructuredSS-Request inside a ''ussd.update'' message)&lt;br /&gt;
&lt;br /&gt;
===== ussd.finalize =====&lt;br /&gt;
&lt;br /&gt;
This message is used to signal the termination of the USSD session. Successful processing of this message means that the USSD session was terminated and is no longer available. &lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP END/ABORT message depending upon the parameters received. A message containing an error that does not map to a MAP error will generate a TCAP ABORT.&lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client, a message that will usually contain a last message indication.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by 'peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a value not allowed in the context of the USSD session&lt;br /&gt;
&lt;br /&gt;
===== Keyword values =====&lt;br /&gt;
&lt;br /&gt;
This section details acceptable values for parameters listed as having type ''keyword''.&lt;br /&gt;
&lt;br /&gt;
* '''hlr.nature/vlr.nature/gsmscf.nature/destination_reference.nature'''&lt;br /&gt;
** unknown&lt;br /&gt;
** international&lt;br /&gt;
** national&lt;br /&gt;
** network-specific&lt;br /&gt;
** subscriber&lt;br /&gt;
** abbreviated&lt;br /&gt;
&lt;br /&gt;
* '''hlr.plan/vlr.plan/gsmscf.plan/destination_reference.plan'''&lt;br /&gt;
** unknown&lt;br /&gt;
** isdn&lt;br /&gt;
** data&lt;br /&gt;
** telex&lt;br /&gt;
** land-mobile&lt;br /&gt;
** national&lt;br /&gt;
** private&lt;br /&gt;
&lt;br /&gt;
* '''operation_type'''&lt;br /&gt;
** pssd: mapping of MAP v1 USSD operation ''processUnstructuredSS-Data'' and of SMPP operation ''PSSD''. &lt;br /&gt;
** pssr: mapping of MAP v2 USSD operation ''processUnstructuredSS-Request'' and of SMPP operation ''PSSR''.&lt;br /&gt;
** ussr: mapping of MAP v2 USSD operation ''unstructuredSS-Request'' and of SMPP operation ''USSR&amp;quot;.&lt;br /&gt;
** ussn: mapping of MAP v2 USSD operation ''unstructuredSS-Notify'' and of SMPP operation ''USSN''.&lt;br /&gt;
&lt;br /&gt;
* '''error'''&lt;br /&gt;
** invalid_logic:  error reported when required processing does not follow USSD rules (e.g., MT request starting with ''processUnstructuredSS-Requests'')&lt;br /&gt;
** system_failure: error mapping for MAP error ''systemFailure''.&lt;br /&gt;
** data_missing: error mapping for  MAP error ''dataMissing''.&lt;br /&gt;
** unexpected_data: error mapping for MAP error ''unexpectedDataValue''.&lt;br /&gt;
** unknown_alphabet: error mapping for MAP error ''unknownAlphabet''.&lt;br /&gt;
** absent_subscriber: error mapping for MAP error ''absentSubscriber''.&lt;br /&gt;
** illegal_subscriber: error mapping for MAP error ''illegalSubscriber''.&lt;br /&gt;
** illegal_equipment: error mapping for MAP error ''illegalEquipment''.&lt;br /&gt;
** ussd_busy: error mapping for MAP error ''ussd-Busy''.&lt;br /&gt;
** call_barred: error mapping for MAP error ''callBarred''.&lt;br /&gt;
** network_failure: error signaling message transmission failure due to  connectivity issues either on the SS7 side or SMPP side.&lt;br /&gt;
** timeout_expired: error signaling a  request timeout occurrence.&lt;br /&gt;
** ussd_sess_end_abnormally: error signaling USSD session termination due to an unknown cause. Mapping for this error implies a TCAP Abort either being generated of received. &lt;br /&gt;
** unknown_error: error specified when there is no available mapping for an errror from SMPP to MAP or vice versa.&lt;br /&gt;
** throttling_error: error signaling that a message failed to be processed due to processing side being in congestion state.&lt;br /&gt;
** protocol_error: SMPP generic error. This error is put whenever there is a SMPP specific error that cannot be mapped into one of the other errors.&lt;br /&gt;
&lt;br /&gt;
* '''text.encoding'''&lt;br /&gt;
** gsm7bit / GSM7Bit: text was encoded/is to be encoded GSM 7 Bit&lt;br /&gt;
** ucs2 / UCS2: text was encoded/is to be encoded UCS 2&lt;br /&gt;
&lt;br /&gt;
* '''text.lang'''&lt;br /&gt;
**  two character string specifying a language according to ISO 639-1 or integer value if mapping is not provided.&lt;br /&gt;
&lt;br /&gt;
==== SMPP custom parameters ====&lt;br /&gt;
&lt;br /&gt;
* 0x1502 =&amp;gt; IMSI;&lt;br /&gt;
* 0x1503 =&amp;gt; VLR Type of Number;&lt;br /&gt;
* 0x1504 =&amp;gt; VLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1505 =&amp;gt; VLR address;&lt;br /&gt;
* 0x1506 =&amp;gt; GSM SCF Type of Number;&lt;br /&gt;
* 0x1507 =&amp;gt; GSM SCF Numbering Plan Indicator;&lt;br /&gt;
* 0x1508 =&amp;gt; GSM_SCF address;&lt;br /&gt;
* 0x1509 =&amp;gt; Destination Reference Type of Number;&lt;br /&gt;
* 0x150a =&amp;gt; Destination Reference Numbering Plan Indicator;&lt;br /&gt;
* 0x150b =&amp;gt; Destination Reference;&lt;br /&gt;
* 0x150c =&amp;gt; MSISDN&lt;br /&gt;
* 0x150d =&amp;gt; Alerting Pattern&lt;br /&gt;
* 0x1800 =&amp;gt; HLR Type of Number;&lt;br /&gt;
* 0x1801 =&amp;gt; HLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1802 =&amp;gt; HLR address.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
==== ysigchan module ====&lt;br /&gt;
&lt;br /&gt;
In order to have MAP connectivity, TCAP instances must be configured in ''ysigchan.conf'': &lt;br /&gt;
&lt;br /&gt;
 ; Example of a SS7 Transaction Capabilities Application Part&lt;br /&gt;
 ; This component is created when encountering a section of this kind&lt;br /&gt;
 ;[ss7tcap]&lt;br /&gt;
 ; type: keyword: identifies the component as a SS7 Transfer Capabilities Application Part&lt;br /&gt;
 ; type = ss7-tcap-ansi for ANSI TCAP&lt;br /&gt;
 ; type = ss7-tcap-itu for ITU TCAP&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; local_SSN: local SubSystem Number. Mandatory&lt;br /&gt;
 ;local_SSN=&lt;br /&gt;
 &lt;br /&gt;
 ; default_remote_SSN: remote SubSystem Number to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_SSN=&lt;br /&gt;
  &lt;br /&gt;
 ; default_remote_pointcode: remote Point Code to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_pointcode=&lt;br /&gt;
 &lt;br /&gt;
 ; pointcodetype: remote Point Code type. See above documentation for available types&lt;br /&gt;
 ;pointcodetype=&lt;br /&gt;
 &lt;br /&gt;
 ; sccp: Name of the SCCP component to create and be used by this TCAP&lt;br /&gt;
 ; A section with the name given here must exist in order to configure the SCCP level&lt;br /&gt;
 ;sccp=&lt;br /&gt;
 &lt;br /&gt;
 ; default_hopcounter: HopCounter provided to SCCP if the application does not provide one&lt;br /&gt;
 ; Values range 1-15, 0 or boolean false disables, boolean true sets to 15&lt;br /&gt;
 ; A non-zero value will force using XUDT or LUDT instead of UDT messages&lt;br /&gt;
 ;default_hopcounter=false&lt;br /&gt;
 &lt;br /&gt;
 ; transact_timeout: Time in seconds to timeout a TCAP transaction after no more activity was registered on it&lt;br /&gt;
 ; NOTE: Values below 15 seconds will be ignored and the timer will assume the default value.&lt;br /&gt;
 ; Defaults to 300 seconds&lt;br /&gt;
 ;transact_timeout=300&lt;br /&gt;
 &lt;br /&gt;
 ; max_timeout_checks: integer: Maximum number of timeout checks done on a transaction without starting the transaction&lt;br /&gt;
 ;  timer before forcefully starting the transaction timer&lt;br /&gt;
 ; Defaults to 10&lt;br /&gt;
 ;max_timeout_checks=10 &lt;br /&gt;
 &lt;br /&gt;
 ; timeout_check: Time interval in milliseconds to check for timeouts.&lt;br /&gt;
 ; Default to 100 ms&lt;br /&gt;
 ;timeout_check=100 &lt;br /&gt;
 &lt;br /&gt;
 ; floodevents: int: How many queued incoming TCAP messages trigger a congestion warning and the drop mechanism&lt;br /&gt;
 ;  for Unidirectional/Begin/QueryWithPermission/QueryWithoutPermission messages.&lt;br /&gt;
 ;  Exit from congestion will take place when there are less the floodevents/4 messages in the queue&lt;br /&gt;
 ; NOTE! Setting this parameter to 0 will disable the congestion warning and protection. Setting it to one will &lt;br /&gt;
 ;  be overriden and floodevents will be set to 2.&lt;br /&gt;
 ;floodevents=1000&lt;br /&gt;
 &lt;br /&gt;
 ;print-messages: Boolean to enable/disable printing of decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ;extended-debug: Boolean to enable/disable printing of the step-by-step decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload. print-messages must be true.&lt;br /&gt;
 ;extended-debug=false&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for keeping the list of current transactions&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
 [tcap-scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=147                                                                                                                                &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                     &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap-hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=7                                                                                                                                  &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Further configuration for SS7 connectivity is required (SCCP, MTP3, etc.).&lt;br /&gt;
&lt;br /&gt;
==== camel_map module ====&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': As of SVN revision 1285, there is a new ''camelmap'' module. For compatibility reasons, the old module, ''camel_map'', was also kept. Both modules read the same configuration file, ''camel_map.conf''. In order to avoid issues, please make sure to only enable one of these modules in the ''[postload]'' section of ''yate.conf''.&lt;br /&gt;
&lt;br /&gt;
The new module is the one that offers USSD UCS2 encoding without language indication, but beware that TCP functionality has been removed from it. That functionality has been moved to the ''xml_tcp'' module. The module only uses messages to communicate with applications. ''ussd_map'' uses messages, so there should be no need for TCP functionality.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configuring of tracking IDs is done in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ;track_id: string: Shared engine variable name used to obtain a unique tracking ID for TCAP transactions&lt;br /&gt;
 ; If not set, the module will not set a tracking ID for the TCAP transaction&lt;br /&gt;
 ;track_id=&lt;br /&gt;
 &lt;br /&gt;
 ;track_id_base: string: Optional string with which to prefix the tracking ID&lt;br /&gt;
 ; This setting has no effect if track_id is not set&lt;br /&gt;
 ;track_id_base=&lt;br /&gt;
&lt;br /&gt;
In order to allow communication over MAP through SS7, sections configurating application should exist for each role of the ussd_map module (gsmSCF/HLR). A ''camel_map.conf'' section configuring an application looks like this:&lt;br /&gt;
 &lt;br /&gt;
 ;[local appName]&lt;br /&gt;
 ; This section configures a local application which transmits the XML messages as internal Yate messages&lt;br /&gt;
 &lt;br /&gt;
 ; translator: string: name of translator to be used by this application.&lt;br /&gt;
 ; Must be one one the [tcap ...] sections configured in the camel_map.conf file.&lt;br /&gt;
 ;translator=&lt;br /&gt;
  &lt;br /&gt;
 ; capabilities: string: List of capabilities separated by commas which this application supports&lt;br /&gt;
 ;capabilities=&lt;br /&gt;
  &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into a Yate message&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - string: pass the XML as a string&lt;br /&gt;
 ;  - object: pass the XML as an object&lt;br /&gt;
 ;  - both: pass the XML as a string and object&lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; enable: bool: Enable this application&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
&lt;br /&gt;
The translator setting refers to a section of the type defined below which configures atachement to a TCAP instance&lt;br /&gt;
&lt;br /&gt;
 ;[tcap map]&lt;br /&gt;
 ; This section configures a TCAP User MAP/CAMEL protocol translator&lt;br /&gt;
 &lt;br /&gt;
 ; enable: bool: Enable this translator&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of TCAP User &lt;br /&gt;
 ; Allowed values are MAP or CAMEL&lt;br /&gt;
 ;type=MAP&lt;br /&gt;
 &lt;br /&gt;
 ; host: IP address: Address on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ;host=127.0.0.1 &lt;br /&gt;
 &lt;br /&gt;
 ; port: integer: Port on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ; Note: setting port to 0 will disable the listener, so it will not accept TCP applications&lt;br /&gt;
 ;port=5555&lt;br /&gt;
 &lt;br /&gt;
 ; tcap: string: Name of TCAP to which this TCAP user should attach itself to for the SS7 communication&lt;br /&gt;
 ;tcap=&lt;br /&gt;
 &lt;br /&gt;
 ; add-encoding: bool: Always add encoding attribute to XML elements for decoded parameters&lt;br /&gt;
 ;add-encoding=default from [general]&lt;br /&gt;
 &lt;br /&gt;
 ; add-timestamp: bool: Add to XML timestamps used for estimating application latency&lt;br /&gt;
 ;add-timestamp=default from [general] &lt;br /&gt;
 &lt;br /&gt;
 ; print-messages: bool: Debug option to print TCAP and XML messages. This option is applicable on reload.&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-string: string: Specifies what the ussd-String parameter will contain as data&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - octets: ussd-String will contain the octets as they were received&lt;br /&gt;
 ;  - text: ussd-String will contain the GSM7Bit decoded text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-string=text&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-decode: string: Specifies what ussd-String parameters should be decoded into text&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - none: ussd-String parameters will never be decoded into text&lt;br /&gt;
 ;  - first: ussd-String in a TCAP Begin message will be decoded into text&lt;br /&gt;
 ;  - all: all ussd-String parameters will be decoded into text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-decode=all&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for mapping of TCAP transactions to applications&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For load sharing (especially in cases of high loads), you can configure multiple applications using the same translator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 applications acting as a gsmSCF, each one attached to the TCAP instance with gsmSCF SSN, and 2 applications as HLR, each one attached to the TCAP instance with HLR SSN 6:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 track_id=ussdgw&lt;br /&gt;
 track_id_base=ussdgw/&lt;br /&gt;
 &lt;br /&gt;
 [tcap scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-scf                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false                                                                                                                           &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-hlr                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false   &lt;br /&gt;
 &lt;br /&gt;
 [local ussdscf1]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all                                                                                                                            &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [local ussdscf2]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all               &lt;br /&gt;
 &lt;br /&gt;
 [local ussdhlr1]&lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all                                                                                                                            &lt;br /&gt;
 &lt;br /&gt;
 [local ussdhlr2]                                                                                                                             &lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all&lt;br /&gt;
&lt;br /&gt;
'''Note''' If SMPP is configured to expect decoded USSD texts (which is the default configuration), the ''ussd-decode'' configuration setting should be set to ''all''.&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
The module is configured through ''ussd_map.conf''. The configuration file sets timeout parameters and processing threads parameters in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList for keeping dialogs&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
 &lt;br /&gt;
 ; component_ttl: integer: Component time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; Defaults to 600000 (10 minutes)&lt;br /&gt;
 ;component_ttl=600000&lt;br /&gt;
 &lt;br /&gt;
 ; dialog_idle_ttl: integer: Dialog idle (nothing sent/received) time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; It can be set to 0 to keep it alive until the remote party terminates the dialog&lt;br /&gt;
 ; Defaults to 86400000 (1 day)&lt;br /&gt;
 ;dialog_idle_ttl=86400000&lt;br /&gt;
&lt;br /&gt;
 ; dialog_ended_ttl: integer: Ended dialog time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000.&lt;br /&gt;
 ; It can be set to 0 to remove the dialog after termination&lt;br /&gt;
 ; Defaults to 0&lt;br /&gt;
 ;dialog_ended_ttl=0&lt;br /&gt;
 &lt;br /&gt;
 ; dispatcher_maxthreads: integer: Maximum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ; NOTE: if the value is set to 0, the module will enqueue the messages into YATE's engine.&lt;br /&gt;
 ;dispatcher_maxthreads=0&lt;br /&gt;
&lt;br /&gt;
 ; dispatcher_minthreads: integer: Minimum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ;dispatcher_minthreads=1&lt;br /&gt;
&lt;br /&gt;
 ;dispatcher_priority: string: Default priority of message dispatch threads&lt;br /&gt;
 ;dispatcher_priority=normal&lt;br /&gt;
&lt;br /&gt;
 ; floodevents: integer: Threshold for signaling congestion when the number of messages waiting to be dispatched exceeds it.&lt;br /&gt;
 ; When entering congestion, all new MAP dialogs and USSD sessions will be refused.&lt;br /&gt;
 ; 0 disables the mechanism&lt;br /&gt;
 ;floodevents=0&lt;br /&gt;
&lt;br /&gt;
 ; congestion_exit_factor: double: Factor used to calculate the exit congestion threshold&lt;br /&gt;
 ; NOTE: if the factor results in a exit congestion threshold of 0 or greater than floodevents, &lt;br /&gt;
 ; the setting will be overriden and the exit congestion threshold will be set to 1.&lt;br /&gt;
 ;congestion_exit_factor=0.5&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Timeout settings should be correlated with timeout settings in TCAP and SMPP, each having its own timeout mechanism.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gateway applications which do the MAP &amp;lt;-&amp;gt; USSD translation are configured through section like the one below:&lt;br /&gt;
&lt;br /&gt;
 [appName]&lt;br /&gt;
 ; section name is the name of the camel_map application, it must correspond to a [local appName] section in camel_map &lt;br /&gt;
&lt;br /&gt;
 ; enable: boolean: Enable this application&lt;br /&gt;
 ; Defaults to yes&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of MAP &amp;lt;-&amp;gt; USSD translator: &lt;br /&gt;
 ;  - SCF means that is the part that receives new dialogs from the HLR (user initiated USSD)&lt;br /&gt;
 ;  - HLR is the part that receives new dialogs from gsmSCF (network initiated USSD)&lt;br /&gt;
 ; This setting cannot be changed on reload.&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into &lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; print_msg: boolean: Print sent/received messages to output&lt;br /&gt;
 ;print_msg=no&lt;br /&gt;
  &lt;br /&gt;
 ; print_xml: boolean: Print sent/received XML data to output&lt;br /&gt;
 ;print_xml=no&lt;br /&gt;
 &lt;br /&gt;
 ; local_addr. : prefix: Parameters prefixed with this set the local SCCP address of this application &lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; local_addr.CallingPartyAddress.route=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.ssn=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.pointcode=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.nature=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.plan=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.translation=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.encoding= &lt;br /&gt;
 &lt;br /&gt;
 ; default_routing: bool : Do routing to default address for all messages&lt;br /&gt;
 ; default_routing=no&lt;br /&gt;
 &lt;br /&gt;
 ; default_addr. : prefix: parameters prefixed with this will be used as the default SCCP called address&lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; default_addr.application=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.route=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.ssn=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.pointcode=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.nature=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.translation=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.encoding=&lt;br /&gt;
 &lt;br /&gt;
 ; hlr_ssn: integer: The SSN expected in the calling address from a HLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;hlr_ssn=6&lt;br /&gt;
 &lt;br /&gt;
 ; vlr_ssn: integer: The SSN expected in the calling address from a VLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;vlr_ssn=7&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each section should have its own equivalent in ''camel_map.conf''.&lt;br /&gt;
In the USSD GW scenario, at least tho applications are needed, one acting as SCF, one as HLR. For load sharing multiple gsmSCF and HLR applications can be configured (see the configuration example below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 gsmSCF applications and 2 HLR applications, each one corresponding with a application section in the ''camel_map.conf'' example:&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 component_ttl=600000                                                                                                                         &lt;br /&gt;
 dialog_ended_ttl=0                                                                                                                           &lt;br /&gt;
 dispatcher_maxthreads=10                                                                                                                     &lt;br /&gt;
 dispatcher_minthreads=5                                                                                                                      &lt;br /&gt;
 ;dispatcher_priority=normal                                                                                                                  &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [ussdscf1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
&lt;br /&gt;
 [ussdscf2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
 &lt;br /&gt;
 [ussdhlr1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                         &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd                                                                                              &lt;br /&gt;
                                                   &lt;br /&gt;
 [ussdhlr2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
TODO - configuration explanations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''NOTE''' The module encodes text to ASCII for default encoding (configuration parameter ''default_encoding_type''). If you want to send GSM 7 Bit for SMPP default encoding, please see how the setting is set below.&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example''''&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
 server=smpp-server                                                                                                                           &lt;br /&gt;
 track_id=ussdgw                                                                                                                              &lt;br /&gt;
 track_id_base=ussdgw/                                                                                                                        &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [smpp-server]                                                                                                                                &lt;br /&gt;
 enable=true                                                                                                                                  &lt;br /&gt;
 session_responseinterval=600000                                                                                                              &lt;br /&gt;
 sessionset_process_max=1                                                                                                                     &lt;br /&gt;
 codec_warndefaults=false                                                                                                                     &lt;br /&gt;
 print-messages=no                                                                                                                            &lt;br /&gt;
                                                                                                                                            &lt;br /&gt;
 [listenerserver server]                                                                                                                      &lt;br /&gt;
 ;enable=yes                                                                                                                                  &lt;br /&gt;
 addr=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=12345&lt;br /&gt;
 ; use GSM 7 Bit for default SMPP encoding&lt;br /&gt;
 default_encoding_type=gsm7bit&lt;br /&gt;
&lt;br /&gt;
=== Monitoring ===&lt;br /&gt;
&lt;br /&gt;
This section details comands through which the state of the USSD GW can be monitored.&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
* '''Congestion state monitoring'''&lt;br /&gt;
&lt;br /&gt;
The ''ussd_map'' module will generate an alarm when entering/exiting a congestion state. If SNMP support is enabled, this will generate a trap on SNMP.&lt;br /&gt;
The congestion status is also reported in the ''state'' entry in the result of the module status command.&lt;br /&gt;
&lt;br /&gt;
* '''Module status'''&lt;br /&gt;
&lt;br /&gt;
The module reports its status through the following command in the YATE telnet console:&lt;br /&gt;
&lt;br /&gt;
 status ussd_map&lt;br /&gt;
&lt;br /&gt;
The command will print the following information:&lt;br /&gt;
&lt;br /&gt;
 workers=count_of_dispatching_threads,messages=count_msg,dialogs=count_of_dialogs,state=normal,count=count_of_applications;format=Type | CurrentDlgs| MAPCreated | UssdCreated |DefaultRouted | MAPSent | MapRecv | USSDSent | USSDRecv | MAPAbort | USSDAbort | BuiltAbort | MAPTimeouts | USSDTimeouts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
* workers: current number of used dispatching threads from the maximum configured pool (e.g., 3/10 means 3 threads are used of a pool of 10)&lt;br /&gt;
* messages: count of messages waiting on the dispatching queue of the engine&lt;br /&gt;
* dialogs: total number of USSD sessions currently handled by all applications&lt;br /&gt;
* state of the engine: normal/congestion&lt;br /&gt;
* count: number of applications acting either as gsmSCF, either as HLR&lt;br /&gt;
* format: name of the application for which the following data is reported:&lt;br /&gt;
** Type: role of the application: SCF (communicates with real HLR), HLR (communicates with real gsmSCF)&lt;br /&gt;
** CurrentDlgs: number of current MAP dialogs handled by this application&lt;br /&gt;
** MAPCreated: number of sessions (dialogs) started by the MAP side&lt;br /&gt;
** UssdCreated: number of sessions (dialogs) started by the SMPP side&lt;br /&gt;
** DefaultRouted: number of dialogs for which failover took place&lt;br /&gt;
** MAPSent: number of MAP messages sent to gsmSCF/HLR. It doesn't count the ones sent via failover routing.&lt;br /&gt;
** MAPRecv: number of MAP messages received from gsmSCF/HLR&lt;br /&gt;
** USSDSent: number of sent ussd.execute/ussd.update/ussd.finalize messages towards the SMPP side.&lt;br /&gt;
** USSDRecv: number of received ussd.execute/ussd.update/usdd.notify messages from SMPP side.&lt;br /&gt;
** MAPAbort: number of dialog aborts generated by MAP side&lt;br /&gt;
** USSDAbort: number of dialog aborts generated by USSD side&lt;br /&gt;
** BuiltAbort: number of dialog aborts generated by the ussd_map module (e.g., not having a ussd.update message processed by anyone will cause ussd_map to generate session abort)&lt;br /&gt;
** MAPTimeouts: number of dialog timeouts generated by MAP side&lt;br /&gt;
** USSDTimeouts: number of timeouts reported by USSD side&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Module control commands'''&lt;br /&gt;
&lt;br /&gt;
The module offers the following control commands through the telnet console:&lt;br /&gt;
* ''control ussd_map appName print-msg [yes|no|verbose]'' : enable printing of received/sent map./ussd./messages.&lt;br /&gt;
* ''control ussd_map appName print-xml [yes|no|verbose]'' : enable printing of received/sent XMLs.&lt;br /&gt;
* ''control ussd_map appName export-xml-as [string|object|both]'' : change the way XML is set in the internal messages&lt;br /&gt;
* ''control ussd_map start_stats'' : begin gathering data for statistics&lt;br /&gt;
* ''control ussd_map stop_stats'' : stop gathering data for statistics&lt;br /&gt;
* ''control usdd_map stats'' : print statistic data per engine and each application in part. Data contains number of MAP messages handled per second, number of USSD messages handled per second, maximum number of current dialogs, number of timeouts and number of aborts.&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
The ysmpp module provides the following options for status command:&lt;br /&gt;
&lt;br /&gt;
'NOTE' the module_name can take the following values: smppserver or smppclient.&lt;br /&gt;
&lt;br /&gt;
* status module_name listeners&lt;br /&gt;
Prints the module listeners status in format: Address|Status|Reason.&lt;br /&gt;
&lt;br /&gt;
* status module_name sessions&lt;br /&gt;
Prints the status of the sessions in format: Id|State|BindMode|SystemId|IpAddress:Port|Congested|Incoming Queue|Outgoing Queue;&lt;br /&gt;
&lt;br /&gt;
** Id: The ID of the SMPP session. Can be used for routing.&lt;br /&gt;
** State: The state of the SMPP session.&lt;br /&gt;
** BindMode: The mode in which the session was bound. (Send/Recv/SendRecv)&lt;br /&gt;
** SystemId: The id with which the session has been authenticated. Can be used in routing.&lt;br /&gt;
** IpAddress:Port: The Ip Address and port of the remote end of the session.&lt;br /&gt;
** Congested: True if this session is in congestion state.&lt;br /&gt;
** Incoming Queue: The number of messages not processed in the incoming queue.&lt;br /&gt;
** Outgoing Queue: The number of messages not processed in the outgoing queue.&lt;br /&gt;
&lt;br /&gt;
*status module_name ussd overview&lt;br /&gt;
Prints the stats of the USSD sessions in format: Total|Active|Average Duration|Total Sent|Total Received|AverageTrafficPerSecond|EndedWithErrors|CongestionRefused&lt;br /&gt;
&lt;br /&gt;
** Total: the number of USSD sessions created since the starting of the program.&lt;br /&gt;
** Active: the number of USSD sessions currently active.&lt;br /&gt;
** Average Duration: average duration of a ussd session.&lt;br /&gt;
** Total Sent: total number of SMPP messages sent for USSD sessions.&lt;br /&gt;
** Total Received: total number of SMPP messages received for USSD sessions.&lt;br /&gt;
** AverageTrafficPerSecond: average traffic per second for USSD sessions.&lt;br /&gt;
** EndedWithErrors: the number of USSD sessions that ended with error.&lt;br /&gt;
** CongestionRefused: the number of USSD sessions refused because the server was overloaded.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* Mobile Application Part (MAP) specification: ETSI TE 129 002&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/USSD_GW</id>
		<title>USSD GW</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/USSD_GW"/>
				<updated>2014-11-11T10:19:50Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: /* ussd.execute */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an implementation an USSD gateway acting as a MAP Service Control Function (gsmSCF) and as a HLR at the same time. When communicating with a HLR or VLR, the YATE USSD GW acts as a gsmSCF. When communicating with a gsmSCF, the YATE USSDGW acts as a HLR.&lt;br /&gt;
The functionality of the USSD GW allows:&lt;br /&gt;
* redirecting of USSD requests arriving either from user side or gsmSCF side to a SMPP client where they can be altered.&lt;br /&gt;
* acting as a proxy for requests that need not be handled by SMPP clients or when the SMPP handling fails&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MAP USSD description ==&lt;br /&gt;
&lt;br /&gt;
In versions 2 and 3 of the GSM MAP protocol there are 3 operations used for USSD operations:&lt;br /&gt;
* processUnstructedSS-Request&lt;br /&gt;
* unstructuredSS-Request&lt;br /&gt;
* unstrusturedSS-Notify&lt;br /&gt;
&lt;br /&gt;
The are 2 scenarios for USSD operations:&lt;br /&gt;
* mobile initiated USSD requests&lt;br /&gt;
* network initiated USSD requests&lt;br /&gt;
&lt;br /&gt;
A TCAP dialog used by USSD is always terminated by the network side.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mobile initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobile initiated USSD requests are USSD requests started by the mobile subscriber.  &lt;br /&gt;
&lt;br /&gt;
A USSD request is started when receiving a TCAP BEGIN message containing the ''processUnstructedSS-Request'' Invoke operation. The request can be handled by the VLR, HLR or a gsmSCF. If the VLR does not handle the request, it will transmit it to the HLR. The HLR can either handle it itself or it can transmit it to a gsmSCF for handling.&lt;br /&gt;
&lt;br /&gt;
At this point, the network can either send a response to the request immediately or request additional information. In the first case, the handler of the request will send a TCAP End with ''processUnstructuredSS-Request'' ResultLast containing the result for the request. &lt;br /&gt;
In the latter case, the network will send a TCAP CONTINUE with ''unstructuredSS-Request'' Invoke operation. The response of the mobile subscriber to this request will be passed to the network in a TCAP CONTINUE with ''unstructuredSS-Request'' ResultLast component. At this point, if the network decides that it has enough information for providing the response to the user, it will send a TCAP END with ''processUnstructuredSS-Request'' ResultLast. Otherwise, it can request further information through another ''unstructuredSS-Request'' Invoke operation.&lt;br /&gt;
&lt;br /&gt;
=== Network initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD requests are USSD requests started by the network towards a certain subscriber.&lt;br /&gt;
&lt;br /&gt;
Requests made by the network can be of one of two types:&lt;br /&gt;
* user interaction requests&lt;br /&gt;
* network notification requests.&lt;br /&gt;
&lt;br /&gt;
User interaction requests are USSD requests that the network makes in which it requires some type of information back from the mobile subscriber. These are started by the network through a TCAP BEGIN containing an ''unstructuredSS-Request'' Invoke. The answer from the mobile subscriber will be received in a TCAP CONTINUE containing an ''unstructuredSS-Request'' ResultLast. If the network still wants to request further information from the user it can send another ''unstructuredSS-Request'' Invoke in a TCAP CONTINUE and wait for the answer. Once the network obtains all needed information, but wants (for user friendliness) to notify the user about the result of the operations, it can send: &lt;br /&gt;
* a TCAP CONTINUE containing a ''unstructuredSS-Notify'' Invoke. When the user side respond with a TCAP CONTINUE containing an empty ''unstructuredSS-Notify'', the network can close the dialog through a TCAP END&lt;br /&gt;
* if the network is not interested in the outcome of ''unstructuredSS-Notify'' Invoke operation, it can send a TCAP END containing  ''unstructuredSS-Notify'' invoke.&lt;br /&gt;
If there is nothing to notify to the user, the network can send a TCAP END to close the TCAP dialog.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network notification requests are USSD requests in which the network only sends a notification to the user. This is achieved by sending a TCAP BEGIN message containing a ''unstructuredSS-Notify'' Invoke. The mobile subscriber side will only respond with a TCAP CONTINUE containing an empty ''unstructuredSS-Notify'' in order to signal that the notification was received. The network will close the TCAP dialog through TCAP END.&lt;br /&gt;
&lt;br /&gt;
=== MAP USSD parameters ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following list describe common parameters used across all MAP USSD operations:&lt;br /&gt;
* ''destinationReference'': this parameter will contain either an MSISDN or an IMSI. In the case of mobile originated USSD request, this will identify the user which made the request. In the case of network initiated requests, it will identify the mobile user to be contacted for this request.&lt;br /&gt;
* ''ussd-String'': for ''processUnstructuredSS-Request'' Invoke it contains the dialed USSD code, for the result it would probably contain a message from the network detailing the result of the request. For ''unstructuredSS-Request'' Invoke it will contain a message asking for the user to choose some option and for the result it will contain the option chosen by the user. In the case of ''unstructuredSS-Notify'', this parameter will only be present in the Invoke.&lt;br /&gt;
* ''ussd-DataCodingScheme'': this is a parameter which specifies in which way the ''ussd-String'' parameter is encoded and it is present whenever ''ussd-String'' is present. E.g., this parameter would indicate if the ''ussd-String'' is encoded using GSM7bit encoding or UCS2.&lt;br /&gt;
&lt;br /&gt;
== SMPP USSD description ==&lt;br /&gt;
&lt;br /&gt;
'''TO DO'''&lt;br /&gt;
&lt;br /&gt;
== System description ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== System design ===&lt;br /&gt;
&lt;br /&gt;
In order to provide the specified functionality, the system makes use of the following YATE components:&lt;br /&gt;
* the SS7 stack  present in YATE &lt;br /&gt;
* the camel_map module which decodes/encodes MAP messages coming from the SS7 network to/from internal YATE messages containing MAP operations in XML form. Together with the SS7 layer this provides MAP connectivity with HLR/gsmSCF.&lt;br /&gt;
* the ussd_map module which takes internal MAP messsages decoded by the camel_map moduled and translates them to internal USSD messages. This module acts as gsmSCF towards a HLR and as a HLR towards a gsmSCF.&lt;br /&gt;
* the SMPP stack present in YATE (ysmpp module) which is able to catch internal USSD messages and transmit them over SMPP. It also translates SMPP messages into internal USSD messages.&lt;br /&gt;
* requests for new USSD sessions will go through routing to decide who should handle the request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following sections detail the behaviour of the system in the different USSD scenarios.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mobile originated USSD handling ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A user initiated USSD session is handled according to the following schema:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# HLR sends a ''processUnstructuredSS-Request (Invoke)'' for code *100#. camel_map decodes the ''ussd-String'' into ''ussd-Text=*100#''.&lt;br /&gt;
# the ussd_map module (gsmSCF side) processes the request received from the HLR and emits a ''call.route'' message with ''called=*100#''.&lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with the ''callto'' parameter set to the value returned from routing. ussd_map dispatches the ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will send  it to the target specified in ''callto'' parameter after the module prefix ''ysmppserver/''.&lt;br /&gt;
# The ysmpp module receives and process the received ''submit_sm'' message.&lt;br /&gt;
# The ysmpp module will send a ''call.route'' message with the ''called=*100#''.&lt;br /&gt;
# The ysmpp module emits a ''ussd.execute'' message with ''callto=retvalue from call.route'' message.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ussd.execute message and if it is the target of the message, meaning that ''callto'' starts with ''ussd_map/''. From that message it will build a map.message that it will send to the gsmSCF as a ''processUnstructuresSS-Request (Invoke)'' MAP message.&amp;lt;br&amp;gt;'''NOTE:''' From here on, the gsmSCF could handle the request in one of  two distinguished cases: one where the gsmSCF requires interaction with the mobile subscriber and one where the gsmSCF just needs to respond to the user request. The following steps detail the former case.&amp;lt;br&amp;gt;&lt;br /&gt;
# gsmSCF sends an ''unstructuredSS-Request (Invoke)'' to  request further information.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits an ''ussd.update'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.update'' message and confirms to the SMPP client that the message sent in step 5 was processed.&lt;br /&gt;
# The SMPP client should confirm the processing of the SMPP message sent in step 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver_sm'' message to the SMPP client with the menu received in ''ussd.update'' message.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message with the received menu.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message from SMPP client and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.update'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time in which the mobile subscribers responds can be quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway when receiving the response from the mobile subscriber.&lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 13.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 21.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 9 and 24 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''processUnstructuredSS-Request (ResultLast)''  for the initial user request.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''processUnstructuredSS-Request (ResultLast)'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 22 or 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 21 or 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 31.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 29.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''processUnstructuredSS-Request (ResultLast)''.&lt;br /&gt;
&lt;br /&gt;
==== Network initiated USSD Request ====&lt;br /&gt;
&lt;br /&gt;
A network initiated USSD session is handled as described in the following figure:&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
# gsmSCF sends''unstructuredSS-Request (Invoke)'' to USSD Gateway (HLR part) to present a menu for MSISDN 0015559191.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits a ''call.route'' message with called=0015559191. &lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with ''callto'' set to the route returned in the return value of the ''call.route'' message and dispatches an ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will then send to the target specified in the ''callto'&amp;quot; parameter after the ''ysmppserver'' module prefix.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message towards SMPP server.&lt;br /&gt;
# The SMPP server processes the received ''submit_sm'' message and dispatches a ''call.route'' message.&lt;br /&gt;
# After successfully dispatching of ''call.route'' message the SMPP server will dispatch a ''call.execute'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.execute'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time to receiving a response from the user after gsmSCF has requested user interaction could be possibly quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway &lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 4.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 13.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 1 and 16 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''TCAP END'' in order to finish the USSD session.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''TCAP END'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 13.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 22.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 21.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''END''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fallback/Proxy mode ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following images detail scenarios where the USSD GW is instructed to do failover.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when an HLR sends ''processUnstructuredSS-Request (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:''' &lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message. &lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD session fallback.&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when a gsmSCF sends a &amp;quot;unstructuredSS-Request/unstructuredSS-Notify (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:'''&lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message.&lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The SMPP USSD gateway will also be bypassed when the ''ussd_map'' module is configured to do failover for all requests.&lt;br /&gt;
&lt;br /&gt;
Any type of SMPP error received either in the result for the ''ussd.execute'' or in the first message back from SMPP that does not have a mapping on MAP will lead to the ''ussd_map'' module doing failover. Errors that would generate a failover are errors like timeout, session ended abnormally, unknown errors, congestion errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once ''ussd_map'' decides that failover should be done, it will use the original received message  from the HLR (MO case)/gsmSCF (MT case) and it will only alter the called address to be the one of the gsmSCF/HLR set for the failover.. The calling address will remain the one received from HLR/gsmSCF, the idea being that for the first message we want to pretend that we are the original gsmSCF/HLR. When the receiving end of this message will want to respond, it will use the calling address from the message. Seeing that the ''ussd_map'' module set it to the original calller's address, further messages exchanged in that dialog between HLR and gsmSCF will not pass through USSD GW again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Internal message API ====&lt;br /&gt;
&lt;br /&gt;
This section documents the YATE messages used internally by the USSD GW.&lt;br /&gt;
&lt;br /&gt;
===== call.route =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used by ussd_map and ysmpp module to determine a destination where a new USSD session should be sent for further processing.&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module when receiving a request for a new USSD session on MAP for ''ussd_map'' or on SMPP for ''ysmpp''.&lt;br /&gt;
''ussd_map'' will only send this message if default routing is not enabled from configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
* module&lt;br /&gt;
** type: string &lt;br /&gt;
** Name of the module which requested routing&lt;br /&gt;
* application&lt;br /&gt;
** type: string&lt;br /&gt;
** Name of the ussd_map application which sent this routing request&lt;br /&gt;
* route_type&lt;br /&gt;
** type: keyword, value: ussd &lt;br /&gt;
** Specifies routing type, in this case it'll be USSD routing&lt;br /&gt;
* smpp_session_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
* smpp_system_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* if the message was processed, the return value of the message indicates the destination of the subsequent ''ussd.execute'' message.&lt;br /&gt;
* if the message was not processed or it returned with error (signaled by the return value being either &amp;quot;-&amp;quot; or &amp;quot;error&amp;quot;)&lt;br /&gt;
** ''ussd_map'' will do failover&lt;br /&gt;
** ysmpp will close the SMPP session, indicating an error either set by the call.route or either set to the default unknown error indication.&lt;br /&gt;
&lt;br /&gt;
===== ussd.execute =====&lt;br /&gt;
&lt;br /&gt;
This message is used to begin a new USSD session:&lt;br /&gt;
* on SMPP, if the message is directed to the ''ysmpp'' module&lt;br /&gt;
* on MAP if the message is directed to the ''ussd_map'' module&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module after successful routing stage. In case of the ''ussd_map'' module, this is message is sent if the routing stage did not indicate failover necessity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* callto:  &lt;br /&gt;
** type : string&lt;br /&gt;
** It specifies the target module to process the message. The string should start with  'ysmppserver/' for the  ''ysmpp&amp;quot; module and with ''ussd_map/'' for the ''ussd_map'' module.&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
** Set to false for UCS2 encoding without language indication&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier assigned for this USSD session by the entity that processed this message.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error returned if the message was not processed.&lt;br /&gt;
&lt;br /&gt;
Processing of this message will return failure:&lt;br /&gt;
* if the message will not be processed&lt;br /&gt;
* if the 'id' parameter is missing.&lt;br /&gt;
* in case of processing error &lt;br /&gt;
* in case of congestion&lt;br /&gt;
&lt;br /&gt;
===== ussd.update =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used for transmitting USSD messages during a USSD session. This type of message will be used after the initial stage of creating the session through ''ussd.execute'' has succeeded.&lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP CONTINUE message &lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will be refused if it is received after a ''ussd.finalize'' message.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a values not allowed in the context of the USSD session (e.g., sending a ''processUnstructuredSS-Request inside a ''ussd.update'' message)&lt;br /&gt;
&lt;br /&gt;
===== ussd.finalize =====&lt;br /&gt;
&lt;br /&gt;
This message is used to signal the termination of the USSD session. Successful processing of this message means that the USSD session was terminated and is no longer available. &lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP END/ABORT message depending upon the parameters received. A message containing an error that does not map to a MAP error will generate a TCAP ABORT.&lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client, a message that will usually contain a last message indication.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by 'peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a value not allowed in the context of the USSD session&lt;br /&gt;
&lt;br /&gt;
===== Keyword values =====&lt;br /&gt;
&lt;br /&gt;
This section details acceptable values for parameters listed as having type ''keyword''.&lt;br /&gt;
&lt;br /&gt;
* '''hlr.nature/vlr.nature/gsmscf.nature/destination_reference.nature'''&lt;br /&gt;
** unknown&lt;br /&gt;
** international&lt;br /&gt;
** national&lt;br /&gt;
** network-specific&lt;br /&gt;
** subscriber&lt;br /&gt;
** abbreviated&lt;br /&gt;
&lt;br /&gt;
* '''hlr.plan/vlr.plan/gsmscf.plan/destination_reference.plan'''&lt;br /&gt;
** unknown&lt;br /&gt;
** isdn&lt;br /&gt;
** data&lt;br /&gt;
** telex&lt;br /&gt;
** land-mobile&lt;br /&gt;
** national&lt;br /&gt;
** private&lt;br /&gt;
&lt;br /&gt;
* '''operation_type'''&lt;br /&gt;
** pssd: mapping of MAP v1 USSD operation ''processUnstructuredSS-Data'' and of SMPP operation ''PSSD''. &lt;br /&gt;
** pssr: mapping of MAP v2 USSD operation ''processUnstructuredSS-Request'' and of SMPP operation ''PSSR''.&lt;br /&gt;
** ussr: mapping of MAP v2 USSD operation ''unstructuredSS-Request'' and of SMPP operation ''USSR&amp;quot;.&lt;br /&gt;
** ussn: mapping of MAP v2 USSD operation ''unstructuredSS-Notify'' and of SMPP operation ''USSN''.&lt;br /&gt;
&lt;br /&gt;
* '''error'''&lt;br /&gt;
** invalid_logic:  error reported when required processing does not follow USSD rules (e.g., MT request starting with ''processUnstructuredSS-Requests'')&lt;br /&gt;
** system_failure: error mapping for MAP error ''systemFailure''.&lt;br /&gt;
** data_missing: error mapping for  MAP error ''dataMissing''.&lt;br /&gt;
** unexpected_data: error mapping for MAP error ''unexpectedDataValue''.&lt;br /&gt;
** unknown_alphabet: error mapping for MAP error ''unknownAlphabet''.&lt;br /&gt;
** absent_subscriber: error mapping for MAP error ''absentSubscriber''.&lt;br /&gt;
** illegal_subscriber: error mapping for MAP error ''illegalSubscriber''.&lt;br /&gt;
** illegal_equipment: error mapping for MAP error ''illegalEquipment''.&lt;br /&gt;
** ussd_busy: error mapping for MAP error ''ussd-Busy''.&lt;br /&gt;
** call_barred: error mapping for MAP error ''callBarred''.&lt;br /&gt;
** network_failure: error signaling message transmission failure due to  connectivity issues either on the SS7 side or SMPP side.&lt;br /&gt;
** timeout_expired: error signaling a  request timeout occurrence.&lt;br /&gt;
** ussd_sess_end_abnormally: error signaling USSD session termination due to an unknown cause. Mapping for this error implies a TCAP Abort either being generated of received. &lt;br /&gt;
** unknown_error: error specified when there is no available mapping for an errror from SMPP to MAP or vice versa.&lt;br /&gt;
** throttling_error: error signaling that a message failed to be processed due to processing side being in congestion state.&lt;br /&gt;
** protocol_error: SMPP generic error. This error is put whenever there is a SMPP specific error that cannot be mapped into one of the other errors.&lt;br /&gt;
&lt;br /&gt;
* '''text.encoding'''&lt;br /&gt;
** gsm7bit / GSM7Bit: text was encoded/is to be encoded GSM 7 Bit&lt;br /&gt;
** ucs2 / UCS2: text was encoded/is to be encoded UCS 2&lt;br /&gt;
&lt;br /&gt;
* '''text.lang'''&lt;br /&gt;
**  two character string specifying a language according to ISO 639-1 or integer value if mapping is not provided.&lt;br /&gt;
&lt;br /&gt;
==== SMPP custom parameters ====&lt;br /&gt;
&lt;br /&gt;
* 0x1502 =&amp;gt; IMSI;&lt;br /&gt;
* 0x1503 =&amp;gt; VLR Type of Number;&lt;br /&gt;
* 0x1504 =&amp;gt; VLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1505 =&amp;gt; VLR address;&lt;br /&gt;
* 0x1506 =&amp;gt; GSM SCF Type of Number;&lt;br /&gt;
* 0x1507 =&amp;gt; GSM SCF Numbering Plan Indicator;&lt;br /&gt;
* 0x1508 =&amp;gt; GSM_SCF address;&lt;br /&gt;
* 0x1509 =&amp;gt; Destination Reference Type of Number;&lt;br /&gt;
* 0x150a =&amp;gt; Destination Reference Numbering Plan Indicator;&lt;br /&gt;
* 0x150b =&amp;gt; Destination Reference;&lt;br /&gt;
* 0x150c =&amp;gt; MSISDN&lt;br /&gt;
* 0x150d =&amp;gt; Alerting Pattern&lt;br /&gt;
* 0x1800 =&amp;gt; HLR Type of Number;&lt;br /&gt;
* 0x1801 =&amp;gt; HLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1802 =&amp;gt; HLR address.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
==== ysigchan module ====&lt;br /&gt;
&lt;br /&gt;
In order to have MAP connectivity, TCAP instances must be configured in ''ysigchan.conf'': &lt;br /&gt;
&lt;br /&gt;
 ; Example of a SS7 Transaction Capabilities Application Part&lt;br /&gt;
 ; This component is created when encountering a section of this kind&lt;br /&gt;
 ;[ss7tcap]&lt;br /&gt;
 ; type: keyword: identifies the component as a SS7 Transfer Capabilities Application Part&lt;br /&gt;
 ; type = ss7-tcap-ansi for ANSI TCAP&lt;br /&gt;
 ; type = ss7-tcap-itu for ITU TCAP&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; local_SSN: local SubSystem Number. Mandatory&lt;br /&gt;
 ;local_SSN=&lt;br /&gt;
 &lt;br /&gt;
 ; default_remote_SSN: remote SubSystem Number to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_SSN=&lt;br /&gt;
  &lt;br /&gt;
 ; default_remote_pointcode: remote Point Code to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_pointcode=&lt;br /&gt;
 &lt;br /&gt;
 ; pointcodetype: remote Point Code type. See above documentation for available types&lt;br /&gt;
 ;pointcodetype=&lt;br /&gt;
 &lt;br /&gt;
 ; sccp: Name of the SCCP component to create and be used by this TCAP&lt;br /&gt;
 ; A section with the name given here must exist in order to configure the SCCP level&lt;br /&gt;
 ;sccp=&lt;br /&gt;
 &lt;br /&gt;
 ; default_hopcounter: HopCounter provided to SCCP if the application does not provide one&lt;br /&gt;
 ; Values range 1-15, 0 or boolean false disables, boolean true sets to 15&lt;br /&gt;
 ; A non-zero value will force using XUDT or LUDT instead of UDT messages&lt;br /&gt;
 ;default_hopcounter=false&lt;br /&gt;
 &lt;br /&gt;
 ; transact_timeout: Time in seconds to timeout a TCAP transaction after no more activity was registered on it&lt;br /&gt;
 ; NOTE: Values below 15 seconds will be ignored and the timer will assume the default value.&lt;br /&gt;
 ; Defaults to 300 seconds&lt;br /&gt;
 ;transact_timeout=300&lt;br /&gt;
 &lt;br /&gt;
 ; max_timeout_checks: integer: Maximum number of timeout checks done on a transaction without starting the transaction&lt;br /&gt;
 ;  timer before forcefully starting the transaction timer&lt;br /&gt;
 ; Defaults to 10&lt;br /&gt;
 ;max_timeout_checks=10 &lt;br /&gt;
 &lt;br /&gt;
 ; timeout_check: Time interval in milliseconds to check for timeouts.&lt;br /&gt;
 ; Default to 100 ms&lt;br /&gt;
 ;timeout_check=100 &lt;br /&gt;
 &lt;br /&gt;
 ; floodevents: int: How many queued incoming TCAP messages trigger a congestion warning and the drop mechanism&lt;br /&gt;
 ;  for Unidirectional/Begin/QueryWithPermission/QueryWithoutPermission messages.&lt;br /&gt;
 ;  Exit from congestion will take place when there are less the floodevents/4 messages in the queue&lt;br /&gt;
 ; NOTE! Setting this parameter to 0 will disable the congestion warning and protection. Setting it to one will &lt;br /&gt;
 ;  be overriden and floodevents will be set to 2.&lt;br /&gt;
 ;floodevents=1000&lt;br /&gt;
 &lt;br /&gt;
 ;print-messages: Boolean to enable/disable printing of decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ;extended-debug: Boolean to enable/disable printing of the step-by-step decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload. print-messages must be true.&lt;br /&gt;
 ;extended-debug=false&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for keeping the list of current transactions&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
 [tcap-scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=147                                                                                                                                &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                     &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap-hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=7                                                                                                                                  &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Further configuration for SS7 connectivity is required (SCCP, MTP3, etc.).&lt;br /&gt;
&lt;br /&gt;
==== camel_map module ====&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': As of SVN revision 1285, there is a new ''camelmap'' module. For compatibility reasons, the old module, ''camel_map'', was also kept. Both modules read the same configuration file, ''camel_map.conf''. In order to avoid issues, please make sure to only enable one of these modules in the ''[postload]'' section of ''yate.conf''.&lt;br /&gt;
&lt;br /&gt;
The new module is the one that offers USSD UCS2 encoding without language indication, but beware that TCP functionality has been removed from it. That functionality has been moved to the ''xml_tcp'' module. The module only uses messages to communicate with applications. ''ussd_map'' uses messages, so there should be no need for TCP functionality.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configuring of tracking IDs is done in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ;track_id: string: Shared engine variable name used to obtain a unique tracking ID for TCAP transactions&lt;br /&gt;
 ; If not set, the module will not set a tracking ID for the TCAP transaction&lt;br /&gt;
 ;track_id=&lt;br /&gt;
 &lt;br /&gt;
 ;track_id_base: string: Optional string with which to prefix the tracking ID&lt;br /&gt;
 ; This setting has no effect if track_id is not set&lt;br /&gt;
 ;track_id_base=&lt;br /&gt;
&lt;br /&gt;
In order to allow communication over MAP through SS7, sections configurating application should exist for each role of the ussd_map module (gsmSCF/HLR). A ''camel_map.conf'' section configuring an application looks like this:&lt;br /&gt;
 &lt;br /&gt;
 ;[local appName]&lt;br /&gt;
 ; This section configures a local application which transmits the XML messages as internal Yate messages&lt;br /&gt;
 &lt;br /&gt;
 ; translator: string: name of translator to be used by this application.&lt;br /&gt;
 ; Must be one one the [tcap ...] sections configured in the camel_map.conf file.&lt;br /&gt;
 ;translator=&lt;br /&gt;
  &lt;br /&gt;
 ; capabilities: string: List of capabilities separated by commas which this application supports&lt;br /&gt;
 ;capabilities=&lt;br /&gt;
  &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into a Yate message&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - string: pass the XML as a string&lt;br /&gt;
 ;  - object: pass the XML as an object&lt;br /&gt;
 ;  - both: pass the XML as a string and object&lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; enable: bool: Enable this application&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
&lt;br /&gt;
The translator setting refers to a section of the type defined below which configures atachement to a TCAP instance&lt;br /&gt;
&lt;br /&gt;
 ;[tcap map]&lt;br /&gt;
 ; This section configures a TCAP User MAP/CAMEL protocol translator&lt;br /&gt;
 &lt;br /&gt;
 ; enable: bool: Enable this translator&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of TCAP User &lt;br /&gt;
 ; Allowed values are MAP or CAMEL&lt;br /&gt;
 ;type=MAP&lt;br /&gt;
 &lt;br /&gt;
 ; host: IP address: Address on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ;host=127.0.0.1 &lt;br /&gt;
 &lt;br /&gt;
 ; port: integer: Port on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ; Note: setting port to 0 will disable the listener, so it will not accept TCP applications&lt;br /&gt;
 ;port=5555&lt;br /&gt;
 &lt;br /&gt;
 ; tcap: string: Name of TCAP to which this TCAP user should attach itself to for the SS7 communication&lt;br /&gt;
 ;tcap=&lt;br /&gt;
 &lt;br /&gt;
 ; add-encoding: bool: Always add encoding attribute to XML elements for decoded parameters&lt;br /&gt;
 ;add-encoding=default from [general]&lt;br /&gt;
 &lt;br /&gt;
 ; add-timestamp: bool: Add to XML timestamps used for estimating application latency&lt;br /&gt;
 ;add-timestamp=default from [general] &lt;br /&gt;
 &lt;br /&gt;
 ; print-messages: bool: Debug option to print TCAP and XML messages. This option is applicable on reload.&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-string: string: Specifies what the ussd-String parameter will contain as data&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - octets: ussd-String will contain the octets as they were received&lt;br /&gt;
 ;  - text: ussd-String will contain the GSM7Bit decoded text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-string=text&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-decode: string: Specifies what ussd-String parameters should be decoded into text&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - none: ussd-String parameters will never be decoded into text&lt;br /&gt;
 ;  - first: ussd-String in a TCAP Begin message will be decoded into text&lt;br /&gt;
 ;  - all: all ussd-String parameters will be decoded into text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-decode=all&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for mapping of TCAP transactions to applications&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For load sharing (especially in cases of high loads), you can configure multiple applications using the same translator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 applications acting as a gsmSCF, each one attached to the TCAP instance with gsmSCF SSN, and 2 applications as HLR, each one attached to the TCAP instance with HLR SSN 6:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 track_id=ussdgw&lt;br /&gt;
 track_id_base=ussdgw/&lt;br /&gt;
 &lt;br /&gt;
 [tcap scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-scf                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false                                                                                                                           &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-hlr                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false   &lt;br /&gt;
 &lt;br /&gt;
 [local ussdscf1]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all                                                                                                                            &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [local ussdscf2]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all               &lt;br /&gt;
 &lt;br /&gt;
 [local ussdhlr1]&lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all                                                                                                                            &lt;br /&gt;
 &lt;br /&gt;
 [local ussdhlr2]                                                                                                                             &lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all&lt;br /&gt;
&lt;br /&gt;
'''Note''' If SMPP is configured to expect decoded USSD texts (which is the default configuration), the ''ussd-decode'' configuration setting should be set to ''all''.&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
The module is configured through ''ussd_map.conf''. The configuration file sets timeout parameters and processing threads parameters in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList for keeping dialogs&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
 &lt;br /&gt;
 ; component_ttl: integer: Component time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; Defaults to 600000 (10 minutes)&lt;br /&gt;
 ;component_ttl=600000&lt;br /&gt;
 &lt;br /&gt;
 ; dialog_idle_ttl: integer: Dialog idle (nothing sent/received) time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; It can be set to 0 to keep it alive until the remote party terminates the dialog&lt;br /&gt;
 ; Defaults to 86400000 (1 day)&lt;br /&gt;
 ;dialog_idle_ttl=86400000&lt;br /&gt;
&lt;br /&gt;
 ; dialog_ended_ttl: integer: Ended dialog time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000.&lt;br /&gt;
 ; It can be set to 0 to remove the dialog after termination&lt;br /&gt;
 ; Defaults to 0&lt;br /&gt;
 ;dialog_ended_ttl=0&lt;br /&gt;
 &lt;br /&gt;
 ; dispatcher_maxthreads: integer: Maximum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ; NOTE: if the value is set to 0, the module will enqueue the messages into YATE's engine.&lt;br /&gt;
 ;dispatcher_maxthreads=0&lt;br /&gt;
&lt;br /&gt;
 ; dispatcher_minthreads: integer: Minimum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ;dispatcher_minthreads=1&lt;br /&gt;
&lt;br /&gt;
 ;dispatcher_priority: string: Default priority of message dispatch threads&lt;br /&gt;
 ;dispatcher_priority=normal&lt;br /&gt;
&lt;br /&gt;
 ; floodevents: integer: Threshold for signaling congestion when the number of messages waiting to be dispatched exceeds it.&lt;br /&gt;
 ; When entering congestion, all new MAP dialogs and USSD sessions will be refused.&lt;br /&gt;
 ; 0 disables the mechanism&lt;br /&gt;
 ;floodevents=0&lt;br /&gt;
&lt;br /&gt;
 ; congestion_exit_factor: double: Factor used to calculate the exit congestion threshold&lt;br /&gt;
 ; NOTE: if the factor results in a exit congestion threshold of 0 or greater than floodevents, &lt;br /&gt;
 ; the setting will be overriden and the exit congestion threshold will be set to 1.&lt;br /&gt;
 ;congestion_exit_factor=0.5&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Timeout settings should be correlated with timeout settings in TCAP and SMPP, each having its own timeout mechanism.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gateway applications which do the MAP &amp;lt;-&amp;gt; USSD translation are configured through section like the one below:&lt;br /&gt;
&lt;br /&gt;
 [appName]&lt;br /&gt;
 ; section name is the name of the camel_map application, it must correspond to a [local appName] section in camel_map &lt;br /&gt;
&lt;br /&gt;
 ; enable: boolean: Enable this application&lt;br /&gt;
 ; Defaults to yes&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of MAP &amp;lt;-&amp;gt; USSD translator: &lt;br /&gt;
 ;  - SCF means that is the part that receives new dialogs from the HLR (user initiated USSD)&lt;br /&gt;
 ;  - HLR is the part that receives new dialogs from gsmSCF (network initiated USSD)&lt;br /&gt;
 ; This setting cannot be changed on reload.&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into &lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; print_msg: boolean: Print sent/received messages to output&lt;br /&gt;
 ;print_msg=no&lt;br /&gt;
  &lt;br /&gt;
 ; print_xml: boolean: Print sent/received XML data to output&lt;br /&gt;
 ;print_xml=no&lt;br /&gt;
 &lt;br /&gt;
 ; local_addr. : prefix: Parameters prefixed with this set the local SCCP address of this application &lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; local_addr.CallingPartyAddress.route=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.ssn=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.pointcode=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.nature=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.plan=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.translation=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.encoding= &lt;br /&gt;
 &lt;br /&gt;
 ; default_routing: bool : Do routing to default address for all messages&lt;br /&gt;
 ; default_routing=no&lt;br /&gt;
 &lt;br /&gt;
 ; default_addr. : prefix: parameters prefixed with this will be used as the default SCCP called address&lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; default_addr.application=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.route=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.ssn=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.pointcode=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.nature=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.translation=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.encoding=&lt;br /&gt;
 &lt;br /&gt;
 ; hlr_ssn: integer: The SSN expected in the calling address from a HLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;hlr_ssn=6&lt;br /&gt;
 &lt;br /&gt;
 ; vlr_ssn: integer: The SSN expected in the calling address from a VLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;vlr_ssn=7&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each section should have its own equivalent in ''camel_map.conf''.&lt;br /&gt;
In the USSD GW scenario, at least tho applications are needed, one acting as SCF, one as HLR. For load sharing multiple gsmSCF and HLR applications can be configured (see the configuration example below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 gsmSCF applications and 2 HLR applications, each one corresponding with a application section in the ''camel_map.conf'' example:&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 component_ttl=600000                                                                                                                         &lt;br /&gt;
 dialog_ended_ttl=0                                                                                                                           &lt;br /&gt;
 dispatcher_maxthreads=10                                                                                                                     &lt;br /&gt;
 dispatcher_minthreads=5                                                                                                                      &lt;br /&gt;
 ;dispatcher_priority=normal                                                                                                                  &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [ussdscf1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
&lt;br /&gt;
 [ussdscf2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
 &lt;br /&gt;
 [ussdhlr1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                         &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd                                                                                              &lt;br /&gt;
                                                   &lt;br /&gt;
 [ussdhlr2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
TODO - configuration explanations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''NOTE''' The module encodes text to ASCII for default encoding (configuration parameter ''default_encoding_type''). If you want to send GSM 7 Bit for SMPP default encoding, please see how the setting is set below.&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example''''&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
 server=smpp-server                                                                                                                           &lt;br /&gt;
 track_id=ussdgw                                                                                                                              &lt;br /&gt;
 track_id_base=ussdgw/                                                                                                                        &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [smpp-server]                                                                                                                                &lt;br /&gt;
 enable=true                                                                                                                                  &lt;br /&gt;
 session_responseinterval=600000                                                                                                              &lt;br /&gt;
 sessionset_process_max=1                                                                                                                     &lt;br /&gt;
 codec_warndefaults=false                                                                                                                     &lt;br /&gt;
 print-messages=no                                                                                                                            &lt;br /&gt;
                                                                                                                                            &lt;br /&gt;
 [listenerserver server]                                                                                                                      &lt;br /&gt;
 ;enable=yes                                                                                                                                  &lt;br /&gt;
 addr=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=12345&lt;br /&gt;
 ; use GSM 7 Bit for default SMPP encoding&lt;br /&gt;
 default_encoding_type=gsm7bit&lt;br /&gt;
&lt;br /&gt;
=== Monitoring ===&lt;br /&gt;
&lt;br /&gt;
This section details comands through which the state of the USSD GW can be monitored.&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
* '''Congestion state monitoring'''&lt;br /&gt;
&lt;br /&gt;
The ''ussd_map'' module will generate an alarm when entering/exiting a congestion state. If SNMP support is enabled, this will generate a trap on SNMP.&lt;br /&gt;
The congestion status is also reported in the ''state'' entry in the result of the module status command.&lt;br /&gt;
&lt;br /&gt;
* '''Module status'''&lt;br /&gt;
&lt;br /&gt;
The module reports its status through the following command in the YATE telnet console:&lt;br /&gt;
&lt;br /&gt;
 status ussd_map&lt;br /&gt;
&lt;br /&gt;
The command will print the following information:&lt;br /&gt;
&lt;br /&gt;
 workers=count_of_dispatching_threads,messages=count_msg,dialogs=count_of_dialogs,state=normal,count=count_of_applications;format=Type | CurrentDlgs| MAPCreated | UssdCreated |DefaultRouted | MAPSent | MapRecv | USSDSent | USSDRecv | MAPAbort | USSDAbort | BuiltAbort | MAPTimeouts | USSDTimeouts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
* workers: current number of used dispatching threads from the maximum configured pool (e.g., 3/10 means 3 threads are used of a pool of 10)&lt;br /&gt;
* messages: count of messages waiting on the dispatching queue of the engine&lt;br /&gt;
* dialogs: total number of USSD sessions currently handled by all applications&lt;br /&gt;
* state of the engine: normal/congestion&lt;br /&gt;
* count: number of applications acting either as gsmSCF, either as HLR&lt;br /&gt;
* format: name of the application for which the following data is reported:&lt;br /&gt;
** Type: role of the application: SCF (communicates with real HLR), HLR (communicates with real gsmSCF)&lt;br /&gt;
** CurrentDlgs: number of current MAP dialogs handled by this application&lt;br /&gt;
** MAPCreated: number of sessions (dialogs) started by the MAP side&lt;br /&gt;
** UssdCreated: number of sessions (dialogs) started by the SMPP side&lt;br /&gt;
** DefaultRouted: number of dialogs for which failover took place&lt;br /&gt;
** MAPSent: number of MAP messages sent to gsmSCF/HLR. It doesn't count the ones sent via failover routing.&lt;br /&gt;
** MAPRecv: number of MAP messages received from gsmSCF/HLR&lt;br /&gt;
** USSDSent: number of sent ussd.execute/ussd.update/ussd.finalize messages towards the SMPP side.&lt;br /&gt;
** USSDRecv: number of received ussd.execute/ussd.update/usdd.notify messages from SMPP side.&lt;br /&gt;
** MAPAbort: number of dialog aborts generated by MAP side&lt;br /&gt;
** USSDAbort: number of dialog aborts generated by USSD side&lt;br /&gt;
** BuiltAbort: number of dialog aborts generated by the ussd_map module (e.g., not having a ussd.update message processed by anyone will cause ussd_map to generate session abort)&lt;br /&gt;
** MAPTimeouts: number of dialog timeouts generated by MAP side&lt;br /&gt;
** USSDTimeouts: number of timeouts reported by USSD side&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Module control commands'''&lt;br /&gt;
&lt;br /&gt;
The module offers the following control commands through the telnet console:&lt;br /&gt;
* ''control ussd_map appName print-msg [yes|no|verbose]'' : enable printing of received/sent map./ussd./messages.&lt;br /&gt;
* ''control ussd_map appName print-xml [yes|no|verbose]'' : enable printing of received/sent XMLs.&lt;br /&gt;
* ''control ussd_map appName export-xml-as [string|object|both]'' : change the way XML is set in the internal messages&lt;br /&gt;
* ''control ussd_map start_stats'' : begin gathering data for statistics&lt;br /&gt;
* ''control ussd_map stop_stats'' : stop gathering data for statistics&lt;br /&gt;
* ''control usdd_map stats'' : print statistic data per engine and each application in part. Data contains number of MAP messages handled per second, number of USSD messages handled per second, maximum number of current dialogs, number of timeouts and number of aborts.&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
The ysmpp module provides the following options for status command:&lt;br /&gt;
&lt;br /&gt;
'NOTE' the module_name can take the following values: smppserver or smppclient.&lt;br /&gt;
&lt;br /&gt;
* status module_name listeners&lt;br /&gt;
Prints the module listeners status in format: Address|Status|Reason.&lt;br /&gt;
&lt;br /&gt;
* status module_name sessions&lt;br /&gt;
Prints the status of the sessions in format: Id|State|BindMode|SystemId|IpAddress:Port|Congested|Incoming Queue|Outgoing Queue;&lt;br /&gt;
&lt;br /&gt;
** Id: The ID of the SMPP session. Can be used for routing.&lt;br /&gt;
** State: The state of the SMPP session.&lt;br /&gt;
** BindMode: The mode in which the session was bound. (Send/Recv/SendRecv)&lt;br /&gt;
** SystemId: The id with which the session has been authenticated. Can be used in routing.&lt;br /&gt;
** IpAddress:Port: The Ip Address and port of the remote end of the session.&lt;br /&gt;
** Congested: True if this session is in congestion state.&lt;br /&gt;
** Incoming Queue: The number of messages not processed in the incoming queue.&lt;br /&gt;
** Outgoing Queue: The number of messages not processed in the outgoing queue.&lt;br /&gt;
&lt;br /&gt;
*status module_name ussd overview&lt;br /&gt;
Prints the stats of the USSD sessions in format: Total|Active|Average Duration|Total Sent|Total Received|AverageTrafficPerSecond|EndedWithErrors|CongestionRefused&lt;br /&gt;
&lt;br /&gt;
** Total: the number of USSD sessions created since the starting of the program.&lt;br /&gt;
** Active: the number of USSD sessions currently active.&lt;br /&gt;
** Average Duration: average duration of a ussd session.&lt;br /&gt;
** Total Sent: total number of SMPP messages sent for USSD sessions.&lt;br /&gt;
** Total Received: total number of SMPP messages received for USSD sessions.&lt;br /&gt;
** AverageTrafficPerSecond: average traffic per second for USSD sessions.&lt;br /&gt;
** EndedWithErrors: the number of USSD sessions that ended with error.&lt;br /&gt;
** CongestionRefused: the number of USSD sessions refused because the server was overloaded.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* Mobile Application Part (MAP) specification: ETSI TE 129 002&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/USSD_GW</id>
		<title>USSD GW</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/USSD_GW"/>
				<updated>2014-11-11T10:14:47Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: /* camel_map module */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an implementation an USSD gateway acting as a MAP Service Control Function (gsmSCF) and as a HLR at the same time. When communicating with a HLR or VLR, the YATE USSD GW acts as a gsmSCF. When communicating with a gsmSCF, the YATE USSDGW acts as a HLR.&lt;br /&gt;
The functionality of the USSD GW allows:&lt;br /&gt;
* redirecting of USSD requests arriving either from user side or gsmSCF side to a SMPP client where they can be altered.&lt;br /&gt;
* acting as a proxy for requests that need not be handled by SMPP clients or when the SMPP handling fails&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MAP USSD description ==&lt;br /&gt;
&lt;br /&gt;
In versions 2 and 3 of the GSM MAP protocol there are 3 operations used for USSD operations:&lt;br /&gt;
* processUnstructedSS-Request&lt;br /&gt;
* unstructuredSS-Request&lt;br /&gt;
* unstrusturedSS-Notify&lt;br /&gt;
&lt;br /&gt;
The are 2 scenarios for USSD operations:&lt;br /&gt;
* mobile initiated USSD requests&lt;br /&gt;
* network initiated USSD requests&lt;br /&gt;
&lt;br /&gt;
A TCAP dialog used by USSD is always terminated by the network side.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mobile initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobile initiated USSD requests are USSD requests started by the mobile subscriber.  &lt;br /&gt;
&lt;br /&gt;
A USSD request is started when receiving a TCAP BEGIN message containing the ''processUnstructedSS-Request'' Invoke operation. The request can be handled by the VLR, HLR or a gsmSCF. If the VLR does not handle the request, it will transmit it to the HLR. The HLR can either handle it itself or it can transmit it to a gsmSCF for handling.&lt;br /&gt;
&lt;br /&gt;
At this point, the network can either send a response to the request immediately or request additional information. In the first case, the handler of the request will send a TCAP End with ''processUnstructuredSS-Request'' ResultLast containing the result for the request. &lt;br /&gt;
In the latter case, the network will send a TCAP CONTINUE with ''unstructuredSS-Request'' Invoke operation. The response of the mobile subscriber to this request will be passed to the network in a TCAP CONTINUE with ''unstructuredSS-Request'' ResultLast component. At this point, if the network decides that it has enough information for providing the response to the user, it will send a TCAP END with ''processUnstructuredSS-Request'' ResultLast. Otherwise, it can request further information through another ''unstructuredSS-Request'' Invoke operation.&lt;br /&gt;
&lt;br /&gt;
=== Network initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD requests are USSD requests started by the network towards a certain subscriber.&lt;br /&gt;
&lt;br /&gt;
Requests made by the network can be of one of two types:&lt;br /&gt;
* user interaction requests&lt;br /&gt;
* network notification requests.&lt;br /&gt;
&lt;br /&gt;
User interaction requests are USSD requests that the network makes in which it requires some type of information back from the mobile subscriber. These are started by the network through a TCAP BEGIN containing an ''unstructuredSS-Request'' Invoke. The answer from the mobile subscriber will be received in a TCAP CONTINUE containing an ''unstructuredSS-Request'' ResultLast. If the network still wants to request further information from the user it can send another ''unstructuredSS-Request'' Invoke in a TCAP CONTINUE and wait for the answer. Once the network obtains all needed information, but wants (for user friendliness) to notify the user about the result of the operations, it can send: &lt;br /&gt;
* a TCAP CONTINUE containing a ''unstructuredSS-Notify'' Invoke. When the user side respond with a TCAP CONTINUE containing an empty ''unstructuredSS-Notify'', the network can close the dialog through a TCAP END&lt;br /&gt;
* if the network is not interested in the outcome of ''unstructuredSS-Notify'' Invoke operation, it can send a TCAP END containing  ''unstructuredSS-Notify'' invoke.&lt;br /&gt;
If there is nothing to notify to the user, the network can send a TCAP END to close the TCAP dialog.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network notification requests are USSD requests in which the network only sends a notification to the user. This is achieved by sending a TCAP BEGIN message containing a ''unstructuredSS-Notify'' Invoke. The mobile subscriber side will only respond with a TCAP CONTINUE containing an empty ''unstructuredSS-Notify'' in order to signal that the notification was received. The network will close the TCAP dialog through TCAP END.&lt;br /&gt;
&lt;br /&gt;
=== MAP USSD parameters ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following list describe common parameters used across all MAP USSD operations:&lt;br /&gt;
* ''destinationReference'': this parameter will contain either an MSISDN or an IMSI. In the case of mobile originated USSD request, this will identify the user which made the request. In the case of network initiated requests, it will identify the mobile user to be contacted for this request.&lt;br /&gt;
* ''ussd-String'': for ''processUnstructuredSS-Request'' Invoke it contains the dialed USSD code, for the result it would probably contain a message from the network detailing the result of the request. For ''unstructuredSS-Request'' Invoke it will contain a message asking for the user to choose some option and for the result it will contain the option chosen by the user. In the case of ''unstructuredSS-Notify'', this parameter will only be present in the Invoke.&lt;br /&gt;
* ''ussd-DataCodingScheme'': this is a parameter which specifies in which way the ''ussd-String'' parameter is encoded and it is present whenever ''ussd-String'' is present. E.g., this parameter would indicate if the ''ussd-String'' is encoded using GSM7bit encoding or UCS2.&lt;br /&gt;
&lt;br /&gt;
== SMPP USSD description ==&lt;br /&gt;
&lt;br /&gt;
'''TO DO'''&lt;br /&gt;
&lt;br /&gt;
== System description ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== System design ===&lt;br /&gt;
&lt;br /&gt;
In order to provide the specified functionality, the system makes use of the following YATE components:&lt;br /&gt;
* the SS7 stack  present in YATE &lt;br /&gt;
* the camel_map module which decodes/encodes MAP messages coming from the SS7 network to/from internal YATE messages containing MAP operations in XML form. Together with the SS7 layer this provides MAP connectivity with HLR/gsmSCF.&lt;br /&gt;
* the ussd_map module which takes internal MAP messsages decoded by the camel_map moduled and translates them to internal USSD messages. This module acts as gsmSCF towards a HLR and as a HLR towards a gsmSCF.&lt;br /&gt;
* the SMPP stack present in YATE (ysmpp module) which is able to catch internal USSD messages and transmit them over SMPP. It also translates SMPP messages into internal USSD messages.&lt;br /&gt;
* requests for new USSD sessions will go through routing to decide who should handle the request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following sections detail the behaviour of the system in the different USSD scenarios.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mobile originated USSD handling ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A user initiated USSD session is handled according to the following schema:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# HLR sends a ''processUnstructuredSS-Request (Invoke)'' for code *100#. camel_map decodes the ''ussd-String'' into ''ussd-Text=*100#''.&lt;br /&gt;
# the ussd_map module (gsmSCF side) processes the request received from the HLR and emits a ''call.route'' message with ''called=*100#''.&lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with the ''callto'' parameter set to the value returned from routing. ussd_map dispatches the ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will send  it to the target specified in ''callto'' parameter after the module prefix ''ysmppserver/''.&lt;br /&gt;
# The ysmpp module receives and process the received ''submit_sm'' message.&lt;br /&gt;
# The ysmpp module will send a ''call.route'' message with the ''called=*100#''.&lt;br /&gt;
# The ysmpp module emits a ''ussd.execute'' message with ''callto=retvalue from call.route'' message.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ussd.execute message and if it is the target of the message, meaning that ''callto'' starts with ''ussd_map/''. From that message it will build a map.message that it will send to the gsmSCF as a ''processUnstructuresSS-Request (Invoke)'' MAP message.&amp;lt;br&amp;gt;'''NOTE:''' From here on, the gsmSCF could handle the request in one of  two distinguished cases: one where the gsmSCF requires interaction with the mobile subscriber and one where the gsmSCF just needs to respond to the user request. The following steps detail the former case.&amp;lt;br&amp;gt;&lt;br /&gt;
# gsmSCF sends an ''unstructuredSS-Request (Invoke)'' to  request further information.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits an ''ussd.update'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.update'' message and confirms to the SMPP client that the message sent in step 5 was processed.&lt;br /&gt;
# The SMPP client should confirm the processing of the SMPP message sent in step 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver_sm'' message to the SMPP client with the menu received in ''ussd.update'' message.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message with the received menu.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message from SMPP client and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.update'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time in which the mobile subscribers responds can be quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway when receiving the response from the mobile subscriber.&lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 13.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 21.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 9 and 24 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''processUnstructuredSS-Request (ResultLast)''  for the initial user request.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''processUnstructuredSS-Request (ResultLast)'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 22 or 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 21 or 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 31.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 29.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''processUnstructuredSS-Request (ResultLast)''.&lt;br /&gt;
&lt;br /&gt;
==== Network initiated USSD Request ====&lt;br /&gt;
&lt;br /&gt;
A network initiated USSD session is handled as described in the following figure:&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
# gsmSCF sends''unstructuredSS-Request (Invoke)'' to USSD Gateway (HLR part) to present a menu for MSISDN 0015559191.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits a ''call.route'' message with called=0015559191. &lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with ''callto'' set to the route returned in the return value of the ''call.route'' message and dispatches an ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will then send to the target specified in the ''callto'&amp;quot; parameter after the ''ysmppserver'' module prefix.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message towards SMPP server.&lt;br /&gt;
# The SMPP server processes the received ''submit_sm'' message and dispatches a ''call.route'' message.&lt;br /&gt;
# After successfully dispatching of ''call.route'' message the SMPP server will dispatch a ''call.execute'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.execute'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time to receiving a response from the user after gsmSCF has requested user interaction could be possibly quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway &lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 4.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 13.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 1 and 16 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''TCAP END'' in order to finish the USSD session.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''TCAP END'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 13.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 22.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 21.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''END''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fallback/Proxy mode ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following images detail scenarios where the USSD GW is instructed to do failover.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when an HLR sends ''processUnstructuredSS-Request (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:''' &lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message. &lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD session fallback.&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when a gsmSCF sends a &amp;quot;unstructuredSS-Request/unstructuredSS-Notify (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:'''&lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message.&lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The SMPP USSD gateway will also be bypassed when the ''ussd_map'' module is configured to do failover for all requests.&lt;br /&gt;
&lt;br /&gt;
Any type of SMPP error received either in the result for the ''ussd.execute'' or in the first message back from SMPP that does not have a mapping on MAP will lead to the ''ussd_map'' module doing failover. Errors that would generate a failover are errors like timeout, session ended abnormally, unknown errors, congestion errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once ''ussd_map'' decides that failover should be done, it will use the original received message  from the HLR (MO case)/gsmSCF (MT case) and it will only alter the called address to be the one of the gsmSCF/HLR set for the failover.. The calling address will remain the one received from HLR/gsmSCF, the idea being that for the first message we want to pretend that we are the original gsmSCF/HLR. When the receiving end of this message will want to respond, it will use the calling address from the message. Seeing that the ''ussd_map'' module set it to the original calller's address, further messages exchanged in that dialog between HLR and gsmSCF will not pass through USSD GW again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Internal message API ====&lt;br /&gt;
&lt;br /&gt;
This section documents the YATE messages used internally by the USSD GW.&lt;br /&gt;
&lt;br /&gt;
===== call.route =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used by ussd_map and ysmpp module to determine a destination where a new USSD session should be sent for further processing.&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module when receiving a request for a new USSD session on MAP for ''ussd_map'' or on SMPP for ''ysmpp''.&lt;br /&gt;
''ussd_map'' will only send this message if default routing is not enabled from configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
* module&lt;br /&gt;
** type: string &lt;br /&gt;
** Name of the module which requested routing&lt;br /&gt;
* application&lt;br /&gt;
** type: string&lt;br /&gt;
** Name of the ussd_map application which sent this routing request&lt;br /&gt;
* route_type&lt;br /&gt;
** type: keyword, value: ussd &lt;br /&gt;
** Specifies routing type, in this case it'll be USSD routing&lt;br /&gt;
* smpp_session_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
* smpp_system_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* if the message was processed, the return value of the message indicates the destination of the subsequent ''ussd.execute'' message.&lt;br /&gt;
* if the message was not processed or it returned with error (signaled by the return value being either &amp;quot;-&amp;quot; or &amp;quot;error&amp;quot;)&lt;br /&gt;
** ''ussd_map'' will do failover&lt;br /&gt;
** ysmpp will close the SMPP session, indicating an error either set by the call.route or either set to the default unknown error indication.&lt;br /&gt;
&lt;br /&gt;
===== ussd.execute =====&lt;br /&gt;
&lt;br /&gt;
This message is used to begin a new USSD session:&lt;br /&gt;
* on SMPP, if the message is directed to the ''ysmpp'' module&lt;br /&gt;
* on MAP if the message is directed to the ''ussd_map'' module&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module after successful routing stage. In case of the ''ussd_map'' module, this is message is sent if the routing stage did not indicate failover necessity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* callto:  &lt;br /&gt;
** type : string&lt;br /&gt;
** It specifies the target module to process the message. The string should start with  'ysmppserver/' for the  ''ysmpp&amp;quot; module and with ''ussd_map/'' for the ''ussd_map'' module.&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier assigned for this USSD session by the entity that processed this message.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error returned if the message was not processed.&lt;br /&gt;
&lt;br /&gt;
Processing of this message will return failure:&lt;br /&gt;
* if the message will not be processed&lt;br /&gt;
* if the 'id' parameter is missing.&lt;br /&gt;
* in case of processing error &lt;br /&gt;
* in case of congestion&lt;br /&gt;
&lt;br /&gt;
===== ussd.update =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used for transmitting USSD messages during a USSD session. This type of message will be used after the initial stage of creating the session through ''ussd.execute'' has succeeded.&lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP CONTINUE message &lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will be refused if it is received after a ''ussd.finalize'' message.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a values not allowed in the context of the USSD session (e.g., sending a ''processUnstructuredSS-Request inside a ''ussd.update'' message)&lt;br /&gt;
&lt;br /&gt;
===== ussd.finalize =====&lt;br /&gt;
&lt;br /&gt;
This message is used to signal the termination of the USSD session. Successful processing of this message means that the USSD session was terminated and is no longer available. &lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP END/ABORT message depending upon the parameters received. A message containing an error that does not map to a MAP error will generate a TCAP ABORT.&lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client, a message that will usually contain a last message indication.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by 'peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a value not allowed in the context of the USSD session&lt;br /&gt;
&lt;br /&gt;
===== Keyword values =====&lt;br /&gt;
&lt;br /&gt;
This section details acceptable values for parameters listed as having type ''keyword''.&lt;br /&gt;
&lt;br /&gt;
* '''hlr.nature/vlr.nature/gsmscf.nature/destination_reference.nature'''&lt;br /&gt;
** unknown&lt;br /&gt;
** international&lt;br /&gt;
** national&lt;br /&gt;
** network-specific&lt;br /&gt;
** subscriber&lt;br /&gt;
** abbreviated&lt;br /&gt;
&lt;br /&gt;
* '''hlr.plan/vlr.plan/gsmscf.plan/destination_reference.plan'''&lt;br /&gt;
** unknown&lt;br /&gt;
** isdn&lt;br /&gt;
** data&lt;br /&gt;
** telex&lt;br /&gt;
** land-mobile&lt;br /&gt;
** national&lt;br /&gt;
** private&lt;br /&gt;
&lt;br /&gt;
* '''operation_type'''&lt;br /&gt;
** pssd: mapping of MAP v1 USSD operation ''processUnstructuredSS-Data'' and of SMPP operation ''PSSD''. &lt;br /&gt;
** pssr: mapping of MAP v2 USSD operation ''processUnstructuredSS-Request'' and of SMPP operation ''PSSR''.&lt;br /&gt;
** ussr: mapping of MAP v2 USSD operation ''unstructuredSS-Request'' and of SMPP operation ''USSR&amp;quot;.&lt;br /&gt;
** ussn: mapping of MAP v2 USSD operation ''unstructuredSS-Notify'' and of SMPP operation ''USSN''.&lt;br /&gt;
&lt;br /&gt;
* '''error'''&lt;br /&gt;
** invalid_logic:  error reported when required processing does not follow USSD rules (e.g., MT request starting with ''processUnstructuredSS-Requests'')&lt;br /&gt;
** system_failure: error mapping for MAP error ''systemFailure''.&lt;br /&gt;
** data_missing: error mapping for  MAP error ''dataMissing''.&lt;br /&gt;
** unexpected_data: error mapping for MAP error ''unexpectedDataValue''.&lt;br /&gt;
** unknown_alphabet: error mapping for MAP error ''unknownAlphabet''.&lt;br /&gt;
** absent_subscriber: error mapping for MAP error ''absentSubscriber''.&lt;br /&gt;
** illegal_subscriber: error mapping for MAP error ''illegalSubscriber''.&lt;br /&gt;
** illegal_equipment: error mapping for MAP error ''illegalEquipment''.&lt;br /&gt;
** ussd_busy: error mapping for MAP error ''ussd-Busy''.&lt;br /&gt;
** call_barred: error mapping for MAP error ''callBarred''.&lt;br /&gt;
** network_failure: error signaling message transmission failure due to  connectivity issues either on the SS7 side or SMPP side.&lt;br /&gt;
** timeout_expired: error signaling a  request timeout occurrence.&lt;br /&gt;
** ussd_sess_end_abnormally: error signaling USSD session termination due to an unknown cause. Mapping for this error implies a TCAP Abort either being generated of received. &lt;br /&gt;
** unknown_error: error specified when there is no available mapping for an errror from SMPP to MAP or vice versa.&lt;br /&gt;
** throttling_error: error signaling that a message failed to be processed due to processing side being in congestion state.&lt;br /&gt;
** protocol_error: SMPP generic error. This error is put whenever there is a SMPP specific error that cannot be mapped into one of the other errors.&lt;br /&gt;
&lt;br /&gt;
* '''text.encoding'''&lt;br /&gt;
** gsm7bit / GSM7Bit: text was encoded/is to be encoded GSM 7 Bit&lt;br /&gt;
** ucs2 / UCS2: text was encoded/is to be encoded UCS 2&lt;br /&gt;
&lt;br /&gt;
* '''text.lang'''&lt;br /&gt;
**  two character string specifying a language according to ISO 639-1 or integer value if mapping is not provided.&lt;br /&gt;
&lt;br /&gt;
==== SMPP custom parameters ====&lt;br /&gt;
&lt;br /&gt;
* 0x1502 =&amp;gt; IMSI;&lt;br /&gt;
* 0x1503 =&amp;gt; VLR Type of Number;&lt;br /&gt;
* 0x1504 =&amp;gt; VLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1505 =&amp;gt; VLR address;&lt;br /&gt;
* 0x1506 =&amp;gt; GSM SCF Type of Number;&lt;br /&gt;
* 0x1507 =&amp;gt; GSM SCF Numbering Plan Indicator;&lt;br /&gt;
* 0x1508 =&amp;gt; GSM_SCF address;&lt;br /&gt;
* 0x1509 =&amp;gt; Destination Reference Type of Number;&lt;br /&gt;
* 0x150a =&amp;gt; Destination Reference Numbering Plan Indicator;&lt;br /&gt;
* 0x150b =&amp;gt; Destination Reference;&lt;br /&gt;
* 0x150c =&amp;gt; MSISDN&lt;br /&gt;
* 0x150d =&amp;gt; Alerting Pattern&lt;br /&gt;
* 0x1800 =&amp;gt; HLR Type of Number;&lt;br /&gt;
* 0x1801 =&amp;gt; HLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1802 =&amp;gt; HLR address.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
==== ysigchan module ====&lt;br /&gt;
&lt;br /&gt;
In order to have MAP connectivity, TCAP instances must be configured in ''ysigchan.conf'': &lt;br /&gt;
&lt;br /&gt;
 ; Example of a SS7 Transaction Capabilities Application Part&lt;br /&gt;
 ; This component is created when encountering a section of this kind&lt;br /&gt;
 ;[ss7tcap]&lt;br /&gt;
 ; type: keyword: identifies the component as a SS7 Transfer Capabilities Application Part&lt;br /&gt;
 ; type = ss7-tcap-ansi for ANSI TCAP&lt;br /&gt;
 ; type = ss7-tcap-itu for ITU TCAP&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; local_SSN: local SubSystem Number. Mandatory&lt;br /&gt;
 ;local_SSN=&lt;br /&gt;
 &lt;br /&gt;
 ; default_remote_SSN: remote SubSystem Number to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_SSN=&lt;br /&gt;
  &lt;br /&gt;
 ; default_remote_pointcode: remote Point Code to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_pointcode=&lt;br /&gt;
 &lt;br /&gt;
 ; pointcodetype: remote Point Code type. See above documentation for available types&lt;br /&gt;
 ;pointcodetype=&lt;br /&gt;
 &lt;br /&gt;
 ; sccp: Name of the SCCP component to create and be used by this TCAP&lt;br /&gt;
 ; A section with the name given here must exist in order to configure the SCCP level&lt;br /&gt;
 ;sccp=&lt;br /&gt;
 &lt;br /&gt;
 ; default_hopcounter: HopCounter provided to SCCP if the application does not provide one&lt;br /&gt;
 ; Values range 1-15, 0 or boolean false disables, boolean true sets to 15&lt;br /&gt;
 ; A non-zero value will force using XUDT or LUDT instead of UDT messages&lt;br /&gt;
 ;default_hopcounter=false&lt;br /&gt;
 &lt;br /&gt;
 ; transact_timeout: Time in seconds to timeout a TCAP transaction after no more activity was registered on it&lt;br /&gt;
 ; NOTE: Values below 15 seconds will be ignored and the timer will assume the default value.&lt;br /&gt;
 ; Defaults to 300 seconds&lt;br /&gt;
 ;transact_timeout=300&lt;br /&gt;
 &lt;br /&gt;
 ; max_timeout_checks: integer: Maximum number of timeout checks done on a transaction without starting the transaction&lt;br /&gt;
 ;  timer before forcefully starting the transaction timer&lt;br /&gt;
 ; Defaults to 10&lt;br /&gt;
 ;max_timeout_checks=10 &lt;br /&gt;
 &lt;br /&gt;
 ; timeout_check: Time interval in milliseconds to check for timeouts.&lt;br /&gt;
 ; Default to 100 ms&lt;br /&gt;
 ;timeout_check=100 &lt;br /&gt;
 &lt;br /&gt;
 ; floodevents: int: How many queued incoming TCAP messages trigger a congestion warning and the drop mechanism&lt;br /&gt;
 ;  for Unidirectional/Begin/QueryWithPermission/QueryWithoutPermission messages.&lt;br /&gt;
 ;  Exit from congestion will take place when there are less the floodevents/4 messages in the queue&lt;br /&gt;
 ; NOTE! Setting this parameter to 0 will disable the congestion warning and protection. Setting it to one will &lt;br /&gt;
 ;  be overriden and floodevents will be set to 2.&lt;br /&gt;
 ;floodevents=1000&lt;br /&gt;
 &lt;br /&gt;
 ;print-messages: Boolean to enable/disable printing of decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ;extended-debug: Boolean to enable/disable printing of the step-by-step decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload. print-messages must be true.&lt;br /&gt;
 ;extended-debug=false&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for keeping the list of current transactions&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
 [tcap-scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=147                                                                                                                                &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                     &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap-hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=7                                                                                                                                  &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Further configuration for SS7 connectivity is required (SCCP, MTP3, etc.).&lt;br /&gt;
&lt;br /&gt;
==== camel_map module ====&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': As of SVN revision 1285, there is a new ''camelmap'' module. For compatibility reasons, the old module, ''camel_map'', was also kept. Both modules read the same configuration file, ''camel_map.conf''. In order to avoid issues, please make sure to only enable one of these modules in the ''[postload]'' section of ''yate.conf''.&lt;br /&gt;
&lt;br /&gt;
The new module is the one that offers USSD UCS2 encoding without language indication, but beware that TCP functionality has been removed from it. That functionality has been moved to the ''xml_tcp'' module. The module only uses messages to communicate with applications. ''ussd_map'' uses messages, so there should be no need for TCP functionality.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configuring of tracking IDs is done in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ;track_id: string: Shared engine variable name used to obtain a unique tracking ID for TCAP transactions&lt;br /&gt;
 ; If not set, the module will not set a tracking ID for the TCAP transaction&lt;br /&gt;
 ;track_id=&lt;br /&gt;
 &lt;br /&gt;
 ;track_id_base: string: Optional string with which to prefix the tracking ID&lt;br /&gt;
 ; This setting has no effect if track_id is not set&lt;br /&gt;
 ;track_id_base=&lt;br /&gt;
&lt;br /&gt;
In order to allow communication over MAP through SS7, sections configurating application should exist for each role of the ussd_map module (gsmSCF/HLR). A ''camel_map.conf'' section configuring an application looks like this:&lt;br /&gt;
 &lt;br /&gt;
 ;[local appName]&lt;br /&gt;
 ; This section configures a local application which transmits the XML messages as internal Yate messages&lt;br /&gt;
 &lt;br /&gt;
 ; translator: string: name of translator to be used by this application.&lt;br /&gt;
 ; Must be one one the [tcap ...] sections configured in the camel_map.conf file.&lt;br /&gt;
 ;translator=&lt;br /&gt;
  &lt;br /&gt;
 ; capabilities: string: List of capabilities separated by commas which this application supports&lt;br /&gt;
 ;capabilities=&lt;br /&gt;
  &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into a Yate message&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - string: pass the XML as a string&lt;br /&gt;
 ;  - object: pass the XML as an object&lt;br /&gt;
 ;  - both: pass the XML as a string and object&lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; enable: bool: Enable this application&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
&lt;br /&gt;
The translator setting refers to a section of the type defined below which configures atachement to a TCAP instance&lt;br /&gt;
&lt;br /&gt;
 ;[tcap map]&lt;br /&gt;
 ; This section configures a TCAP User MAP/CAMEL protocol translator&lt;br /&gt;
 &lt;br /&gt;
 ; enable: bool: Enable this translator&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of TCAP User &lt;br /&gt;
 ; Allowed values are MAP or CAMEL&lt;br /&gt;
 ;type=MAP&lt;br /&gt;
 &lt;br /&gt;
 ; host: IP address: Address on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ;host=127.0.0.1 &lt;br /&gt;
 &lt;br /&gt;
 ; port: integer: Port on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ; Note: setting port to 0 will disable the listener, so it will not accept TCP applications&lt;br /&gt;
 ;port=5555&lt;br /&gt;
 &lt;br /&gt;
 ; tcap: string: Name of TCAP to which this TCAP user should attach itself to for the SS7 communication&lt;br /&gt;
 ;tcap=&lt;br /&gt;
 &lt;br /&gt;
 ; add-encoding: bool: Always add encoding attribute to XML elements for decoded parameters&lt;br /&gt;
 ;add-encoding=default from [general]&lt;br /&gt;
 &lt;br /&gt;
 ; add-timestamp: bool: Add to XML timestamps used for estimating application latency&lt;br /&gt;
 ;add-timestamp=default from [general] &lt;br /&gt;
 &lt;br /&gt;
 ; print-messages: bool: Debug option to print TCAP and XML messages. This option is applicable on reload.&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-string: string: Specifies what the ussd-String parameter will contain as data&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - octets: ussd-String will contain the octets as they were received&lt;br /&gt;
 ;  - text: ussd-String will contain the GSM7Bit decoded text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-string=text&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-decode: string: Specifies what ussd-String parameters should be decoded into text&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - none: ussd-String parameters will never be decoded into text&lt;br /&gt;
 ;  - first: ussd-String in a TCAP Begin message will be decoded into text&lt;br /&gt;
 ;  - all: all ussd-String parameters will be decoded into text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-decode=all&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for mapping of TCAP transactions to applications&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For load sharing (especially in cases of high loads), you can configure multiple applications using the same translator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 applications acting as a gsmSCF, each one attached to the TCAP instance with gsmSCF SSN, and 2 applications as HLR, each one attached to the TCAP instance with HLR SSN 6:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 track_id=ussdgw&lt;br /&gt;
 track_id_base=ussdgw/&lt;br /&gt;
 &lt;br /&gt;
 [tcap scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-scf                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false                                                                                                                           &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-hlr                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false   &lt;br /&gt;
 &lt;br /&gt;
 [local ussdscf1]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all                                                                                                                            &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [local ussdscf2]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all               &lt;br /&gt;
 &lt;br /&gt;
 [local ussdhlr1]&lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all                                                                                                                            &lt;br /&gt;
 &lt;br /&gt;
 [local ussdhlr2]                                                                                                                             &lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all&lt;br /&gt;
&lt;br /&gt;
'''Note''' If SMPP is configured to expect decoded USSD texts (which is the default configuration), the ''ussd-decode'' configuration setting should be set to ''all''.&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
The module is configured through ''ussd_map.conf''. The configuration file sets timeout parameters and processing threads parameters in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList for keeping dialogs&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
 &lt;br /&gt;
 ; component_ttl: integer: Component time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; Defaults to 600000 (10 minutes)&lt;br /&gt;
 ;component_ttl=600000&lt;br /&gt;
 &lt;br /&gt;
 ; dialog_idle_ttl: integer: Dialog idle (nothing sent/received) time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; It can be set to 0 to keep it alive until the remote party terminates the dialog&lt;br /&gt;
 ; Defaults to 86400000 (1 day)&lt;br /&gt;
 ;dialog_idle_ttl=86400000&lt;br /&gt;
&lt;br /&gt;
 ; dialog_ended_ttl: integer: Ended dialog time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000.&lt;br /&gt;
 ; It can be set to 0 to remove the dialog after termination&lt;br /&gt;
 ; Defaults to 0&lt;br /&gt;
 ;dialog_ended_ttl=0&lt;br /&gt;
 &lt;br /&gt;
 ; dispatcher_maxthreads: integer: Maximum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ; NOTE: if the value is set to 0, the module will enqueue the messages into YATE's engine.&lt;br /&gt;
 ;dispatcher_maxthreads=0&lt;br /&gt;
&lt;br /&gt;
 ; dispatcher_minthreads: integer: Minimum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ;dispatcher_minthreads=1&lt;br /&gt;
&lt;br /&gt;
 ;dispatcher_priority: string: Default priority of message dispatch threads&lt;br /&gt;
 ;dispatcher_priority=normal&lt;br /&gt;
&lt;br /&gt;
 ; floodevents: integer: Threshold for signaling congestion when the number of messages waiting to be dispatched exceeds it.&lt;br /&gt;
 ; When entering congestion, all new MAP dialogs and USSD sessions will be refused.&lt;br /&gt;
 ; 0 disables the mechanism&lt;br /&gt;
 ;floodevents=0&lt;br /&gt;
&lt;br /&gt;
 ; congestion_exit_factor: double: Factor used to calculate the exit congestion threshold&lt;br /&gt;
 ; NOTE: if the factor results in a exit congestion threshold of 0 or greater than floodevents, &lt;br /&gt;
 ; the setting will be overriden and the exit congestion threshold will be set to 1.&lt;br /&gt;
 ;congestion_exit_factor=0.5&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Timeout settings should be correlated with timeout settings in TCAP and SMPP, each having its own timeout mechanism.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gateway applications which do the MAP &amp;lt;-&amp;gt; USSD translation are configured through section like the one below:&lt;br /&gt;
&lt;br /&gt;
 [appName]&lt;br /&gt;
 ; section name is the name of the camel_map application, it must correspond to a [local appName] section in camel_map &lt;br /&gt;
&lt;br /&gt;
 ; enable: boolean: Enable this application&lt;br /&gt;
 ; Defaults to yes&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of MAP &amp;lt;-&amp;gt; USSD translator: &lt;br /&gt;
 ;  - SCF means that is the part that receives new dialogs from the HLR (user initiated USSD)&lt;br /&gt;
 ;  - HLR is the part that receives new dialogs from gsmSCF (network initiated USSD)&lt;br /&gt;
 ; This setting cannot be changed on reload.&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into &lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; print_msg: boolean: Print sent/received messages to output&lt;br /&gt;
 ;print_msg=no&lt;br /&gt;
  &lt;br /&gt;
 ; print_xml: boolean: Print sent/received XML data to output&lt;br /&gt;
 ;print_xml=no&lt;br /&gt;
 &lt;br /&gt;
 ; local_addr. : prefix: Parameters prefixed with this set the local SCCP address of this application &lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; local_addr.CallingPartyAddress.route=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.ssn=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.pointcode=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.nature=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.plan=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.translation=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.encoding= &lt;br /&gt;
 &lt;br /&gt;
 ; default_routing: bool : Do routing to default address for all messages&lt;br /&gt;
 ; default_routing=no&lt;br /&gt;
 &lt;br /&gt;
 ; default_addr. : prefix: parameters prefixed with this will be used as the default SCCP called address&lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; default_addr.application=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.route=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.ssn=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.pointcode=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.nature=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.translation=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.encoding=&lt;br /&gt;
 &lt;br /&gt;
 ; hlr_ssn: integer: The SSN expected in the calling address from a HLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;hlr_ssn=6&lt;br /&gt;
 &lt;br /&gt;
 ; vlr_ssn: integer: The SSN expected in the calling address from a VLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;vlr_ssn=7&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each section should have its own equivalent in ''camel_map.conf''.&lt;br /&gt;
In the USSD GW scenario, at least tho applications are needed, one acting as SCF, one as HLR. For load sharing multiple gsmSCF and HLR applications can be configured (see the configuration example below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 gsmSCF applications and 2 HLR applications, each one corresponding with a application section in the ''camel_map.conf'' example:&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 component_ttl=600000                                                                                                                         &lt;br /&gt;
 dialog_ended_ttl=0                                                                                                                           &lt;br /&gt;
 dispatcher_maxthreads=10                                                                                                                     &lt;br /&gt;
 dispatcher_minthreads=5                                                                                                                      &lt;br /&gt;
 ;dispatcher_priority=normal                                                                                                                  &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [ussdscf1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
&lt;br /&gt;
 [ussdscf2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
 &lt;br /&gt;
 [ussdhlr1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                         &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd                                                                                              &lt;br /&gt;
                                                   &lt;br /&gt;
 [ussdhlr2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
TODO - configuration explanations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''NOTE''' The module encodes text to ASCII for default encoding (configuration parameter ''default_encoding_type''). If you want to send GSM 7 Bit for SMPP default encoding, please see how the setting is set below.&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example''''&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
 server=smpp-server                                                                                                                           &lt;br /&gt;
 track_id=ussdgw                                                                                                                              &lt;br /&gt;
 track_id_base=ussdgw/                                                                                                                        &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [smpp-server]                                                                                                                                &lt;br /&gt;
 enable=true                                                                                                                                  &lt;br /&gt;
 session_responseinterval=600000                                                                                                              &lt;br /&gt;
 sessionset_process_max=1                                                                                                                     &lt;br /&gt;
 codec_warndefaults=false                                                                                                                     &lt;br /&gt;
 print-messages=no                                                                                                                            &lt;br /&gt;
                                                                                                                                            &lt;br /&gt;
 [listenerserver server]                                                                                                                      &lt;br /&gt;
 ;enable=yes                                                                                                                                  &lt;br /&gt;
 addr=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=12345&lt;br /&gt;
 ; use GSM 7 Bit for default SMPP encoding&lt;br /&gt;
 default_encoding_type=gsm7bit&lt;br /&gt;
&lt;br /&gt;
=== Monitoring ===&lt;br /&gt;
&lt;br /&gt;
This section details comands through which the state of the USSD GW can be monitored.&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
* '''Congestion state monitoring'''&lt;br /&gt;
&lt;br /&gt;
The ''ussd_map'' module will generate an alarm when entering/exiting a congestion state. If SNMP support is enabled, this will generate a trap on SNMP.&lt;br /&gt;
The congestion status is also reported in the ''state'' entry in the result of the module status command.&lt;br /&gt;
&lt;br /&gt;
* '''Module status'''&lt;br /&gt;
&lt;br /&gt;
The module reports its status through the following command in the YATE telnet console:&lt;br /&gt;
&lt;br /&gt;
 status ussd_map&lt;br /&gt;
&lt;br /&gt;
The command will print the following information:&lt;br /&gt;
&lt;br /&gt;
 workers=count_of_dispatching_threads,messages=count_msg,dialogs=count_of_dialogs,state=normal,count=count_of_applications;format=Type | CurrentDlgs| MAPCreated | UssdCreated |DefaultRouted | MAPSent | MapRecv | USSDSent | USSDRecv | MAPAbort | USSDAbort | BuiltAbort | MAPTimeouts | USSDTimeouts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
* workers: current number of used dispatching threads from the maximum configured pool (e.g., 3/10 means 3 threads are used of a pool of 10)&lt;br /&gt;
* messages: count of messages waiting on the dispatching queue of the engine&lt;br /&gt;
* dialogs: total number of USSD sessions currently handled by all applications&lt;br /&gt;
* state of the engine: normal/congestion&lt;br /&gt;
* count: number of applications acting either as gsmSCF, either as HLR&lt;br /&gt;
* format: name of the application for which the following data is reported:&lt;br /&gt;
** Type: role of the application: SCF (communicates with real HLR), HLR (communicates with real gsmSCF)&lt;br /&gt;
** CurrentDlgs: number of current MAP dialogs handled by this application&lt;br /&gt;
** MAPCreated: number of sessions (dialogs) started by the MAP side&lt;br /&gt;
** UssdCreated: number of sessions (dialogs) started by the SMPP side&lt;br /&gt;
** DefaultRouted: number of dialogs for which failover took place&lt;br /&gt;
** MAPSent: number of MAP messages sent to gsmSCF/HLR. It doesn't count the ones sent via failover routing.&lt;br /&gt;
** MAPRecv: number of MAP messages received from gsmSCF/HLR&lt;br /&gt;
** USSDSent: number of sent ussd.execute/ussd.update/ussd.finalize messages towards the SMPP side.&lt;br /&gt;
** USSDRecv: number of received ussd.execute/ussd.update/usdd.notify messages from SMPP side.&lt;br /&gt;
** MAPAbort: number of dialog aborts generated by MAP side&lt;br /&gt;
** USSDAbort: number of dialog aborts generated by USSD side&lt;br /&gt;
** BuiltAbort: number of dialog aborts generated by the ussd_map module (e.g., not having a ussd.update message processed by anyone will cause ussd_map to generate session abort)&lt;br /&gt;
** MAPTimeouts: number of dialog timeouts generated by MAP side&lt;br /&gt;
** USSDTimeouts: number of timeouts reported by USSD side&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Module control commands'''&lt;br /&gt;
&lt;br /&gt;
The module offers the following control commands through the telnet console:&lt;br /&gt;
* ''control ussd_map appName print-msg [yes|no|verbose]'' : enable printing of received/sent map./ussd./messages.&lt;br /&gt;
* ''control ussd_map appName print-xml [yes|no|verbose]'' : enable printing of received/sent XMLs.&lt;br /&gt;
* ''control ussd_map appName export-xml-as [string|object|both]'' : change the way XML is set in the internal messages&lt;br /&gt;
* ''control ussd_map start_stats'' : begin gathering data for statistics&lt;br /&gt;
* ''control ussd_map stop_stats'' : stop gathering data for statistics&lt;br /&gt;
* ''control usdd_map stats'' : print statistic data per engine and each application in part. Data contains number of MAP messages handled per second, number of USSD messages handled per second, maximum number of current dialogs, number of timeouts and number of aborts.&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
The ysmpp module provides the following options for status command:&lt;br /&gt;
&lt;br /&gt;
'NOTE' the module_name can take the following values: smppserver or smppclient.&lt;br /&gt;
&lt;br /&gt;
* status module_name listeners&lt;br /&gt;
Prints the module listeners status in format: Address|Status|Reason.&lt;br /&gt;
&lt;br /&gt;
* status module_name sessions&lt;br /&gt;
Prints the status of the sessions in format: Id|State|BindMode|SystemId|IpAddress:Port|Congested|Incoming Queue|Outgoing Queue;&lt;br /&gt;
&lt;br /&gt;
** Id: The ID of the SMPP session. Can be used for routing.&lt;br /&gt;
** State: The state of the SMPP session.&lt;br /&gt;
** BindMode: The mode in which the session was bound. (Send/Recv/SendRecv)&lt;br /&gt;
** SystemId: The id with which the session has been authenticated. Can be used in routing.&lt;br /&gt;
** IpAddress:Port: The Ip Address and port of the remote end of the session.&lt;br /&gt;
** Congested: True if this session is in congestion state.&lt;br /&gt;
** Incoming Queue: The number of messages not processed in the incoming queue.&lt;br /&gt;
** Outgoing Queue: The number of messages not processed in the outgoing queue.&lt;br /&gt;
&lt;br /&gt;
*status module_name ussd overview&lt;br /&gt;
Prints the stats of the USSD sessions in format: Total|Active|Average Duration|Total Sent|Total Received|AverageTrafficPerSecond|EndedWithErrors|CongestionRefused&lt;br /&gt;
&lt;br /&gt;
** Total: the number of USSD sessions created since the starting of the program.&lt;br /&gt;
** Active: the number of USSD sessions currently active.&lt;br /&gt;
** Average Duration: average duration of a ussd session.&lt;br /&gt;
** Total Sent: total number of SMPP messages sent for USSD sessions.&lt;br /&gt;
** Total Received: total number of SMPP messages received for USSD sessions.&lt;br /&gt;
** AverageTrafficPerSecond: average traffic per second for USSD sessions.&lt;br /&gt;
** EndedWithErrors: the number of USSD sessions that ended with error.&lt;br /&gt;
** CongestionRefused: the number of USSD sessions refused because the server was overloaded.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* Mobile Application Part (MAP) specification: ETSI TE 129 002&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/USSD_GW</id>
		<title>USSD GW</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/USSD_GW"/>
				<updated>2014-08-07T14:42:48Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: /* Network initiated USSD requests */ Changed description as per Vladimir's notes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an implementation an USSD gateway acting as a MAP Service Control Function (gsmSCF) and as a HLR at the same time. When communicating with a HLR or VLR, the YATE USSD GW acts as a gsmSCF. When communicating with a gsmSCF, the YATE USSDGW acts as a HLR.&lt;br /&gt;
The functionality of the USSD GW allows:&lt;br /&gt;
* redirecting of USSD requests arriving either from user side or gsmSCF side to a SMPP client where they can be altered.&lt;br /&gt;
* acting as a proxy for requests that need not be handled by SMPP clients or when the SMPP handling fails&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MAP USSD description ==&lt;br /&gt;
&lt;br /&gt;
In versions 2 and 3 of the GSM MAP protocol there are 3 operations used for USSD operations:&lt;br /&gt;
* processUnstructedSS-Request&lt;br /&gt;
* unstructuredSS-Request&lt;br /&gt;
* unstrusturedSS-Notify&lt;br /&gt;
&lt;br /&gt;
The are 2 scenarios for USSD operations:&lt;br /&gt;
* mobile initiated USSD requests&lt;br /&gt;
* network initiated USSD requests&lt;br /&gt;
&lt;br /&gt;
A TCAP dialog used by USSD is always terminated by the network side.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mobile initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobile initiated USSD requests are USSD requests started by the mobile subscriber.  &lt;br /&gt;
&lt;br /&gt;
A USSD request is started when receiving a TCAP BEGIN message containing the ''processUnstructedSS-Request'' Invoke operation. The request can be handled by the VLR, HLR or a gsmSCF. If the VLR does not handle the request, it will transmit it to the HLR. The HLR can either handle it itself or it can transmit it to a gsmSCF for handling.&lt;br /&gt;
&lt;br /&gt;
At this point, the network can either send a response to the request immediately or request additional information. In the first case, the handler of the request will send a TCAP End with ''processUnstructuredSS-Request'' ResultLast containing the result for the request. &lt;br /&gt;
In the latter case, the network will send a TCAP CONTINUE with ''unstructuredSS-Request'' Invoke operation. The response of the mobile subscriber to this request will be passed to the network in a TCAP CONTINUE with ''unstructuredSS-Request'' ResultLast component. At this point, if the network decides that it has enough information for providing the response to the user, it will send a TCAP END with ''processUnstructuredSS-Request'' ResultLast. Otherwise, it can request further information through another ''unstructuredSS-Request'' Invoke operation.&lt;br /&gt;
&lt;br /&gt;
=== Network initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD requests are USSD requests started by the network towards a certain subscriber.&lt;br /&gt;
&lt;br /&gt;
Requests made by the network can be of one of two types:&lt;br /&gt;
* user interaction requests&lt;br /&gt;
* network notification requests.&lt;br /&gt;
&lt;br /&gt;
User interaction requests are USSD requests that the network makes in which it requires some type of information back from the mobile subscriber. These are started by the network through a TCAP BEGIN containing an ''unstructuredSS-Request'' Invoke. The answer from the mobile subscriber will be received in a TCAP CONTINUE containing an ''unstructuredSS-Request'' ResultLast. If the network still wants to request further information from the user it can send another ''unstructuredSS-Request'' Invoke in a TCAP CONTINUE and wait for the answer. Once the network obtains all needed information, but wants (for user friendliness) to notify the user about the result of the operations, it can send: &lt;br /&gt;
* a TCAP CONTINUE containing a ''unstructuredSS-Notify'' Invoke. When the user side respond with a TCAP CONTINUE containing an empty ''unstructuredSS-Notify'', the network can close the dialog through a TCAP END&lt;br /&gt;
* if the network is not interested in the outcome of ''unstructuredSS-Notify'' Invoke operation, it can send a TCAP END containing  ''unstructuredSS-Notify'' invoke.&lt;br /&gt;
If there is nothing to notify to the user, the network can send a TCAP END to close the TCAP dialog.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network notification requests are USSD requests in which the network only sends a notification to the user. This is achieved by sending a TCAP BEGIN message containing a ''unstructuredSS-Notify'' Invoke. The mobile subscriber side will only respond with a TCAP CONTINUE containing an empty ''unstructuredSS-Notify'' in order to signal that the notification was received. The network will close the TCAP dialog through TCAP END.&lt;br /&gt;
&lt;br /&gt;
=== MAP USSD parameters ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following list describe common parameters used across all MAP USSD operations:&lt;br /&gt;
* ''destinationReference'': this parameter will contain either an MSISDN or an IMSI. In the case of mobile originated USSD request, this will identify the user which made the request. In the case of network initiated requests, it will identify the mobile user to be contacted for this request.&lt;br /&gt;
* ''ussd-String'': for ''processUnstructuredSS-Request'' Invoke it contains the dialed USSD code, for the result it would probably contain a message from the network detailing the result of the request. For ''unstructuredSS-Request'' Invoke it will contain a message asking for the user to choose some option and for the result it will contain the option chosen by the user. In the case of ''unstructuredSS-Notify'', this parameter will only be present in the Invoke.&lt;br /&gt;
* ''ussd-DataCodingScheme'': this is a parameter which specifies in which way the ''ussd-String'' parameter is encoded and it is present whenever ''ussd-String'' is present. E.g., this parameter would indicate if the ''ussd-String'' is encoded using GSM7bit encoding or UCS2.&lt;br /&gt;
&lt;br /&gt;
== SMPP USSD description ==&lt;br /&gt;
&lt;br /&gt;
'''TO DO'''&lt;br /&gt;
&lt;br /&gt;
== System description ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== System design ===&lt;br /&gt;
&lt;br /&gt;
In order to provide the specified functionality, the system makes use of the following YATE components:&lt;br /&gt;
* the SS7 stack  present in YATE &lt;br /&gt;
* the camel_map module which decodes/encodes MAP messages coming from the SS7 network to/from internal YATE messages containing MAP operations in XML form. Together with the SS7 layer this provides MAP connectivity with HLR/gsmSCF.&lt;br /&gt;
* the ussd_map module which takes internal MAP messsages decoded by the camel_map moduled and translates them to internal USSD messages. This module acts as gsmSCF towards a HLR and as a HLR towards a gsmSCF.&lt;br /&gt;
* the SMPP stack present in YATE (ysmpp module) which is able to catch internal USSD messages and transmit them over SMPP. It also translates SMPP messages into internal USSD messages.&lt;br /&gt;
* requests for new USSD sessions will go through routing to decide who should handle the request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following sections detail the behaviour of the system in the different USSD scenarios.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mobile originated USSD handling ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A user initiated USSD session is handled according to the following schema:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# HLR sends a ''processUnstructuredSS-Request (Invoke)'' for code *100#. camel_map decodes the ''ussd-String'' into ''ussd-Text=*100#''.&lt;br /&gt;
# the ussd_map module (gsmSCF side) processes the request received from the HLR and emits a ''call.route'' message with ''called=*100#''.&lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with the ''callto'' parameter set to the value returned from routing. ussd_map dispatches the ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will send  it to the target specified in ''callto'' parameter after the module prefix ''ysmppserver/''.&lt;br /&gt;
# The ysmpp module receives and process the received ''submit_sm'' message.&lt;br /&gt;
# The ysmpp module will send a ''call.route'' message with the ''called=*100#''.&lt;br /&gt;
# The ysmpp module emits a ''ussd.execute'' message with ''callto=retvalue from call.route'' message.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ussd.execute message and if it is the target of the message, meaning that ''callto'' starts with ''ussd_map/''. From that message it will build a map.message that it will send to the gsmSCF as a ''processUnstructuresSS-Request (Invoke)'' MAP message.&amp;lt;br&amp;gt;'''NOTE:''' From here on, the gsmSCF could handle the request in one of  two distinguished cases: one where the gsmSCF requires interaction with the mobile subscriber and one where the gsmSCF just needs to respond to the user request. The following steps detail the former case.&amp;lt;br&amp;gt;&lt;br /&gt;
# gsmSCF sends an ''unstructuredSS-Request (Invoke)'' to  request further information.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits an ''ussd.update'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.update'' message and confirms to the SMPP client that the message sent in step 5 was processed.&lt;br /&gt;
# The SMPP client should confirm the processing of the SMPP message sent in step 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver_sm'' message to the SMPP client with the menu received in ''ussd.update'' message.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message with the received menu.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message from SMPP client and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.update'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time in which the mobile subscribers responds can be quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway when receiving the response from the mobile subscriber.&lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 13.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 21.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 9 and 24 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''processUnstructuredSS-Request (ResultLast)''  for the initial user request.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''processUnstructuredSS-Request (ResultLast)'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 22 or 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 21 or 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 31.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 29.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''processUnstructuredSS-Request (ResultLast)''.&lt;br /&gt;
&lt;br /&gt;
==== Network initiated USSD Request ====&lt;br /&gt;
&lt;br /&gt;
A network initiated USSD session is handled as described in the following figure:&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
# gsmSCF sends''unstructuredSS-Request (Invoke)'' to USSD Gateway (HLR part) to present a menu for MSISDN 0015559191.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits a ''call.route'' message with called=0015559191. &lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with ''callto'' set to the route returned in the return value of the ''call.route'' message and dispatches an ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will then send to the target specified in the ''callto'&amp;quot; parameter after the ''ysmppserver'' module prefix.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message towards SMPP server.&lt;br /&gt;
# The SMPP server processes the received ''submit_sm'' message and dispatches a ''call.route'' message.&lt;br /&gt;
# After successfully dispatching of ''call.route'' message the SMPP server will dispatch a ''call.execute'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.execute'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time to receiving a response from the user after gsmSCF has requested user interaction could be possibly quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway &lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 4.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 13.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 1 and 16 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''TCAP END'' in order to finish the USSD session.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''TCAP END'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 13.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 22.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 21.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''END''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fallback/Proxy mode ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following images detail scenarios where the USSD GW is instructed to do failover.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when an HLR sends ''processUnstructuredSS-Request (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:''' &lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message. &lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD session fallback.&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when a gsmSCF sends a &amp;quot;unstructuredSS-Request/unstructuredSS-Notify (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:'''&lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message.&lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The SMPP USSD gateway will also be bypassed when the ''ussd_map'' module is configured to do failover for all requests.&lt;br /&gt;
&lt;br /&gt;
Any type of SMPP error received either in the result for the ''ussd.execute'' or in the first message back from SMPP that does not have a mapping on MAP will lead to the ''ussd_map'' module doing failover. Errors that would generate a failover are errors like timeout, session ended abnormally, unknown errors, congestion errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once ''ussd_map'' decides that failover should be done, it will use the original received message  from the HLR (MO case)/gsmSCF (MT case) and it will only alter the called address to be the one of the gsmSCF/HLR set for the failover.. The calling address will remain the one received from HLR/gsmSCF, the idea being that for the first message we want to pretend that we are the original gsmSCF/HLR. When the receiving end of this message will want to respond, it will use the calling address from the message. Seeing that the ''ussd_map'' module set it to the original calller's address, further messages exchanged in that dialog between HLR and gsmSCF will not pass through USSD GW again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Internal message API ====&lt;br /&gt;
&lt;br /&gt;
This section documents the YATE messages used internally by the USSD GW.&lt;br /&gt;
&lt;br /&gt;
===== call.route =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used by ussd_map and ysmpp module to determine a destination where a new USSD session should be sent for further processing.&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module when receiving a request for a new USSD session on MAP for ''ussd_map'' or on SMPP for ''ysmpp''.&lt;br /&gt;
''ussd_map'' will only send this message if default routing is not enabled from configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
* module&lt;br /&gt;
** type: string &lt;br /&gt;
** Name of the module which requested routing&lt;br /&gt;
* application&lt;br /&gt;
** type: string&lt;br /&gt;
** Name of the ussd_map application which sent this routing request&lt;br /&gt;
* route_type&lt;br /&gt;
** type: keyword, value: ussd &lt;br /&gt;
** Specifies routing type, in this case it'll be USSD routing&lt;br /&gt;
* smpp_session_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
* smpp_system_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* if the message was processed, the return value of the message indicates the destination of the subsequent ''ussd.execute'' message.&lt;br /&gt;
* if the message was not processed or it returned with error (signaled by the return value being either &amp;quot;-&amp;quot; or &amp;quot;error&amp;quot;)&lt;br /&gt;
** ''ussd_map'' will do failover&lt;br /&gt;
** ysmpp will close the SMPP session, indicating an error either set by the call.route or either set to the default unknown error indication.&lt;br /&gt;
&lt;br /&gt;
===== ussd.execute =====&lt;br /&gt;
&lt;br /&gt;
This message is used to begin a new USSD session:&lt;br /&gt;
* on SMPP, if the message is directed to the ''ysmpp'' module&lt;br /&gt;
* on MAP if the message is directed to the ''ussd_map'' module&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module after successful routing stage. In case of the ''ussd_map'' module, this is message is sent if the routing stage did not indicate failover necessity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* callto:  &lt;br /&gt;
** type : string&lt;br /&gt;
** It specifies the target module to process the message. The string should start with  'ysmppserver/' for the  ''ysmpp&amp;quot; module and with ''ussd_map/'' for the ''ussd_map'' module.&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier assigned for this USSD session by the entity that processed this message.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error returned if the message was not processed.&lt;br /&gt;
&lt;br /&gt;
Processing of this message will return failure:&lt;br /&gt;
* if the message will not be processed&lt;br /&gt;
* if the 'id' parameter is missing.&lt;br /&gt;
* in case of processing error &lt;br /&gt;
* in case of congestion&lt;br /&gt;
&lt;br /&gt;
===== ussd.update =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used for transmitting USSD messages during a USSD session. This type of message will be used after the initial stage of creating the session through ''ussd.execute'' has succeeded.&lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP CONTINUE message &lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will be refused if it is received after a ''ussd.finalize'' message.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a values not allowed in the context of the USSD session (e.g., sending a ''processUnstructuredSS-Request inside a ''ussd.update'' message)&lt;br /&gt;
&lt;br /&gt;
===== ussd.finalize =====&lt;br /&gt;
&lt;br /&gt;
This message is used to signal the termination of the USSD session. Successful processing of this message means that the USSD session was terminated and is no longer available. &lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP END/ABORT message depending upon the parameters received. A message containing an error that does not map to a MAP error will generate a TCAP ABORT.&lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client, a message that will usually contain a last message indication.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by 'peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a value not allowed in the context of the USSD session&lt;br /&gt;
&lt;br /&gt;
===== Keyword values =====&lt;br /&gt;
&lt;br /&gt;
This section details acceptable values for parameters listed as having type ''keyword''.&lt;br /&gt;
&lt;br /&gt;
* '''hlr.nature/vlr.nature/gsmscf.nature/destination_reference.nature'''&lt;br /&gt;
** unknown&lt;br /&gt;
** international&lt;br /&gt;
** national&lt;br /&gt;
** network-specific&lt;br /&gt;
** subscriber&lt;br /&gt;
** abbreviated&lt;br /&gt;
&lt;br /&gt;
* '''hlr.plan/vlr.plan/gsmscf.plan/destination_reference.plan'''&lt;br /&gt;
** unknown&lt;br /&gt;
** isdn&lt;br /&gt;
** data&lt;br /&gt;
** telex&lt;br /&gt;
** land-mobile&lt;br /&gt;
** national&lt;br /&gt;
** private&lt;br /&gt;
&lt;br /&gt;
* '''operation_type'''&lt;br /&gt;
** pssd: mapping of MAP v1 USSD operation ''processUnstructuredSS-Data'' and of SMPP operation ''PSSD''. &lt;br /&gt;
** pssr: mapping of MAP v2 USSD operation ''processUnstructuredSS-Request'' and of SMPP operation ''PSSR''.&lt;br /&gt;
** ussr: mapping of MAP v2 USSD operation ''unstructuredSS-Request'' and of SMPP operation ''USSR&amp;quot;.&lt;br /&gt;
** ussn: mapping of MAP v2 USSD operation ''unstructuredSS-Notify'' and of SMPP operation ''USSN''.&lt;br /&gt;
&lt;br /&gt;
* '''error'''&lt;br /&gt;
** invalid_logic:  error reported when required processing does not follow USSD rules (e.g., MT request starting with ''processUnstructuredSS-Requests'')&lt;br /&gt;
** system_failure: error mapping for MAP error ''systemFailure''.&lt;br /&gt;
** data_missing: error mapping for  MAP error ''dataMissing''.&lt;br /&gt;
** unexpected_data: error mapping for MAP error ''unexpectedDataValue''.&lt;br /&gt;
** unknown_alphabet: error mapping for MAP error ''unknownAlphabet''.&lt;br /&gt;
** absent_subscriber: error mapping for MAP error ''absentSubscriber''.&lt;br /&gt;
** illegal_subscriber: error mapping for MAP error ''illegalSubscriber''.&lt;br /&gt;
** illegal_equipment: error mapping for MAP error ''illegalEquipment''.&lt;br /&gt;
** ussd_busy: error mapping for MAP error ''ussd-Busy''.&lt;br /&gt;
** call_barred: error mapping for MAP error ''callBarred''.&lt;br /&gt;
** network_failure: error signaling message transmission failure due to  connectivity issues either on the SS7 side or SMPP side.&lt;br /&gt;
** timeout_expired: error signaling a  request timeout occurrence.&lt;br /&gt;
** ussd_sess_end_abnormally: error signaling USSD session termination due to an unknown cause. Mapping for this error implies a TCAP Abort either being generated of received. &lt;br /&gt;
** unknown_error: error specified when there is no available mapping for an errror from SMPP to MAP or vice versa.&lt;br /&gt;
** throttling_error: error signaling that a message failed to be processed due to processing side being in congestion state.&lt;br /&gt;
** protocol_error: SMPP generic error. This error is put whenever there is a SMPP specific error that cannot be mapped into one of the other errors.&lt;br /&gt;
&lt;br /&gt;
* '''text.encoding'''&lt;br /&gt;
** gsm7bit / GSM7Bit: text was encoded/is to be encoded GSM 7 Bit&lt;br /&gt;
** ucs2 / UCS2: text was encoded/is to be encoded UCS 2&lt;br /&gt;
&lt;br /&gt;
* '''text.lang'''&lt;br /&gt;
**  two character string specifying a language according to ISO 639-1 or integer value if mapping is not provided.&lt;br /&gt;
&lt;br /&gt;
==== SMPP custom parameters ====&lt;br /&gt;
&lt;br /&gt;
* 0x1502 =&amp;gt; IMSI;&lt;br /&gt;
* 0x1503 =&amp;gt; VLR Type of Number;&lt;br /&gt;
* 0x1504 =&amp;gt; VLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1505 =&amp;gt; VLR address;&lt;br /&gt;
* 0x1506 =&amp;gt; GSM SCF Type of Number;&lt;br /&gt;
* 0x1507 =&amp;gt; GSM SCF Numbering Plan Indicator;&lt;br /&gt;
* 0x1508 =&amp;gt; GSM_SCF address;&lt;br /&gt;
* 0x1509 =&amp;gt; Destination Reference Type of Number;&lt;br /&gt;
* 0x150a =&amp;gt; Destination Reference Numbering Plan Indicator;&lt;br /&gt;
* 0x150b =&amp;gt; Destination Reference;&lt;br /&gt;
* 0x150c =&amp;gt; MSISDN&lt;br /&gt;
* 0x150d =&amp;gt; Alerting Pattern&lt;br /&gt;
* 0x1800 =&amp;gt; HLR Type of Number;&lt;br /&gt;
* 0x1801 =&amp;gt; HLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1802 =&amp;gt; HLR address.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
==== ysigchan module ====&lt;br /&gt;
&lt;br /&gt;
In order to have MAP connectivity, TCAP instances must be configured in ''ysigchan.conf'': &lt;br /&gt;
&lt;br /&gt;
 ; Example of a SS7 Transaction Capabilities Application Part&lt;br /&gt;
 ; This component is created when encountering a section of this kind&lt;br /&gt;
 ;[ss7tcap]&lt;br /&gt;
 ; type: keyword: identifies the component as a SS7 Transfer Capabilities Application Part&lt;br /&gt;
 ; type = ss7-tcap-ansi for ANSI TCAP&lt;br /&gt;
 ; type = ss7-tcap-itu for ITU TCAP&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; local_SSN: local SubSystem Number. Mandatory&lt;br /&gt;
 ;local_SSN=&lt;br /&gt;
 &lt;br /&gt;
 ; default_remote_SSN: remote SubSystem Number to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_SSN=&lt;br /&gt;
  &lt;br /&gt;
 ; default_remote_pointcode: remote Point Code to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_pointcode=&lt;br /&gt;
 &lt;br /&gt;
 ; pointcodetype: remote Point Code type. See above documentation for available types&lt;br /&gt;
 ;pointcodetype=&lt;br /&gt;
 &lt;br /&gt;
 ; sccp: Name of the SCCP component to create and be used by this TCAP&lt;br /&gt;
 ; A section with the name given here must exist in order to configure the SCCP level&lt;br /&gt;
 ;sccp=&lt;br /&gt;
 &lt;br /&gt;
 ; default_hopcounter: HopCounter provided to SCCP if the application does not provide one&lt;br /&gt;
 ; Values range 1-15, 0 or boolean false disables, boolean true sets to 15&lt;br /&gt;
 ; A non-zero value will force using XUDT or LUDT instead of UDT messages&lt;br /&gt;
 ;default_hopcounter=false&lt;br /&gt;
 &lt;br /&gt;
 ; transact_timeout: Time in seconds to timeout a TCAP transaction after no more activity was registered on it&lt;br /&gt;
 ; NOTE: Values below 15 seconds will be ignored and the timer will assume the default value.&lt;br /&gt;
 ; Defaults to 300 seconds&lt;br /&gt;
 ;transact_timeout=300&lt;br /&gt;
 &lt;br /&gt;
 ; max_timeout_checks: integer: Maximum number of timeout checks done on a transaction without starting the transaction&lt;br /&gt;
 ;  timer before forcefully starting the transaction timer&lt;br /&gt;
 ; Defaults to 10&lt;br /&gt;
 ;max_timeout_checks=10 &lt;br /&gt;
 &lt;br /&gt;
 ; timeout_check: Time interval in milliseconds to check for timeouts.&lt;br /&gt;
 ; Default to 100 ms&lt;br /&gt;
 ;timeout_check=100 &lt;br /&gt;
 &lt;br /&gt;
 ; floodevents: int: How many queued incoming TCAP messages trigger a congestion warning and the drop mechanism&lt;br /&gt;
 ;  for Unidirectional/Begin/QueryWithPermission/QueryWithoutPermission messages.&lt;br /&gt;
 ;  Exit from congestion will take place when there are less the floodevents/4 messages in the queue&lt;br /&gt;
 ; NOTE! Setting this parameter to 0 will disable the congestion warning and protection. Setting it to one will &lt;br /&gt;
 ;  be overriden and floodevents will be set to 2.&lt;br /&gt;
 ;floodevents=1000&lt;br /&gt;
 &lt;br /&gt;
 ;print-messages: Boolean to enable/disable printing of decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ;extended-debug: Boolean to enable/disable printing of the step-by-step decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload. print-messages must be true.&lt;br /&gt;
 ;extended-debug=false&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for keeping the list of current transactions&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
 [tcap-scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=147                                                                                                                                &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                     &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap-hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=7                                                                                                                                  &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Further configuration for SS7 connectivity is required (SCCP, MTP3, etc.).&lt;br /&gt;
&lt;br /&gt;
==== camel_map module ====&lt;br /&gt;
&lt;br /&gt;
Configuring of tracking IDs is done in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ;track_id: string: Shared engine variable name used to obtain a unique tracking ID for TCAP transactions&lt;br /&gt;
 ; If not set, the module will not set a tracking ID for the TCAP transaction&lt;br /&gt;
 ;track_id=&lt;br /&gt;
 &lt;br /&gt;
 ;track_id_base: string: Optional string with which to prefix the tracking ID&lt;br /&gt;
 ; This setting has no effect if track_id is not set&lt;br /&gt;
 ;track_id_base=&lt;br /&gt;
&lt;br /&gt;
In order to allow communication over MAP through SS7, sections configurating application should exist for each role of the ussd_map module (gsmSCF/HLR). A ''camel_map.conf'' section configuring an application looks like this:&lt;br /&gt;
 &lt;br /&gt;
 ;[local appName]&lt;br /&gt;
 ; This section configures a local application which transmits the XML messages as internal Yate messages&lt;br /&gt;
 &lt;br /&gt;
 ; translator: string: name of translator to be used by this application.&lt;br /&gt;
 ; Must be one one the [tcap ...] sections configured in the camel_map.conf file.&lt;br /&gt;
 ;translator=&lt;br /&gt;
  &lt;br /&gt;
 ; capabilities: string: List of capabilities separated by commas which this application supports&lt;br /&gt;
 ;capabilities=&lt;br /&gt;
  &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into a Yate message&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - string: pass the XML as a string&lt;br /&gt;
 ;  - object: pass the XML as an object&lt;br /&gt;
 ;  - both: pass the XML as a string and object&lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; enable: bool: Enable this application&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
&lt;br /&gt;
The translator setting refers to a section of the type defined below which configures atachement to a TCAP instance&lt;br /&gt;
&lt;br /&gt;
 ;[tcap map]&lt;br /&gt;
 ; This section configures a TCAP User MAP/CAMEL protocol translator&lt;br /&gt;
 &lt;br /&gt;
 ; enable: bool: Enable this translator&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of TCAP User &lt;br /&gt;
 ; Allowed values are MAP or CAMEL&lt;br /&gt;
 ;type=MAP&lt;br /&gt;
 &lt;br /&gt;
 ; host: IP address: Address on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ;host=127.0.0.1 &lt;br /&gt;
 &lt;br /&gt;
 ; port: integer: Port on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ; Note: setting port to 0 will disable the listener, so it will not accept TCP applications&lt;br /&gt;
 ;port=5555&lt;br /&gt;
 &lt;br /&gt;
 ; tcap: string: Name of TCAP to which this TCAP user should attach itself to for the SS7 communication&lt;br /&gt;
 ;tcap=&lt;br /&gt;
 &lt;br /&gt;
 ; add-encoding: bool: Always add encoding attribute to XML elements for decoded parameters&lt;br /&gt;
 ;add-encoding=default from [general]&lt;br /&gt;
 &lt;br /&gt;
 ; add-timestamp: bool: Add to XML timestamps used for estimating application latency&lt;br /&gt;
 ;add-timestamp=default from [general] &lt;br /&gt;
 &lt;br /&gt;
 ; print-messages: bool: Debug option to print TCAP and XML messages. This option is applicable on reload.&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-string: string: Specifies what the ussd-String parameter will contain as data&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - octets: ussd-String will contain the octets as they were received&lt;br /&gt;
 ;  - text: ussd-String will contain the GSM7Bit decoded text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-string=text&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-decode: string: Specifies what ussd-String parameters should be decoded into text&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - none: ussd-String parameters will never be decoded into text&lt;br /&gt;
 ;  - first: ussd-String in a TCAP Begin message will be decoded into text&lt;br /&gt;
 ;  - all: all ussd-String parameters will be decoded into text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-decode=all&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for mapping of TCAP transactions to applications&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For load sharing (especially in cases of high loads), you can configure multiple applications using the same translator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 applications acting as a gsmSCF, each one attached to the TCAP instance with gsmSCF SSN, and 2 applications as HLR, each one attached to the TCAP instance with HLR SSN 6:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 track_id=ussdgw&lt;br /&gt;
 track_id_base=ussdgw/&lt;br /&gt;
 &lt;br /&gt;
 [tcap scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-scf                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false                                                                                                                           &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-hlr                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false   &lt;br /&gt;
 &lt;br /&gt;
 [local ussdscf1]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all                                                                                                                            &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [local ussdscf2]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all               &lt;br /&gt;
 &lt;br /&gt;
 [local ussdhlr1]&lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all                                                                                                                            &lt;br /&gt;
 &lt;br /&gt;
 [local ussdhlr2]                                                                                                                             &lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all&lt;br /&gt;
&lt;br /&gt;
'''Note''' If SMPP is configured to expect decoded USSD texts (which is the default configuration), the ''ussd-decode'' configuration setting should be set to ''all''.&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
The module is configured through ''ussd_map.conf''. The configuration file sets timeout parameters and processing threads parameters in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList for keeping dialogs&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
 &lt;br /&gt;
 ; component_ttl: integer: Component time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; Defaults to 600000 (10 minutes)&lt;br /&gt;
 ;component_ttl=600000&lt;br /&gt;
 &lt;br /&gt;
 ; dialog_idle_ttl: integer: Dialog idle (nothing sent/received) time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; It can be set to 0 to keep it alive until the remote party terminates the dialog&lt;br /&gt;
 ; Defaults to 86400000 (1 day)&lt;br /&gt;
 ;dialog_idle_ttl=86400000&lt;br /&gt;
&lt;br /&gt;
 ; dialog_ended_ttl: integer: Ended dialog time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000.&lt;br /&gt;
 ; It can be set to 0 to remove the dialog after termination&lt;br /&gt;
 ; Defaults to 0&lt;br /&gt;
 ;dialog_ended_ttl=0&lt;br /&gt;
 &lt;br /&gt;
 ; dispatcher_maxthreads: integer: Maximum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ; NOTE: if the value is set to 0, the module will enqueue the messages into YATE's engine.&lt;br /&gt;
 ;dispatcher_maxthreads=0&lt;br /&gt;
&lt;br /&gt;
 ; dispatcher_minthreads: integer: Minimum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ;dispatcher_minthreads=1&lt;br /&gt;
&lt;br /&gt;
 ;dispatcher_priority: string: Default priority of message dispatch threads&lt;br /&gt;
 ;dispatcher_priority=normal&lt;br /&gt;
&lt;br /&gt;
 ; floodevents: integer: Threshold for signaling congestion when the number of messages waiting to be dispatched exceeds it.&lt;br /&gt;
 ; When entering congestion, all new MAP dialogs and USSD sessions will be refused.&lt;br /&gt;
 ; 0 disables the mechanism&lt;br /&gt;
 ;floodevents=0&lt;br /&gt;
&lt;br /&gt;
 ; congestion_exit_factor: double: Factor used to calculate the exit congestion threshold&lt;br /&gt;
 ; NOTE: if the factor results in a exit congestion threshold of 0 or greater than floodevents, &lt;br /&gt;
 ; the setting will be overriden and the exit congestion threshold will be set to 1.&lt;br /&gt;
 ;congestion_exit_factor=0.5&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Timeout settings should be correlated with timeout settings in TCAP and SMPP, each having its own timeout mechanism.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gateway applications which do the MAP &amp;lt;-&amp;gt; USSD translation are configured through section like the one below:&lt;br /&gt;
&lt;br /&gt;
 [appName]&lt;br /&gt;
 ; section name is the name of the camel_map application, it must correspond to a [local appName] section in camel_map &lt;br /&gt;
&lt;br /&gt;
 ; enable: boolean: Enable this application&lt;br /&gt;
 ; Defaults to yes&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of MAP &amp;lt;-&amp;gt; USSD translator: &lt;br /&gt;
 ;  - SCF means that is the part that receives new dialogs from the HLR (user initiated USSD)&lt;br /&gt;
 ;  - HLR is the part that receives new dialogs from gsmSCF (network initiated USSD)&lt;br /&gt;
 ; This setting cannot be changed on reload.&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into &lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; print_msg: boolean: Print sent/received messages to output&lt;br /&gt;
 ;print_msg=no&lt;br /&gt;
  &lt;br /&gt;
 ; print_xml: boolean: Print sent/received XML data to output&lt;br /&gt;
 ;print_xml=no&lt;br /&gt;
 &lt;br /&gt;
 ; local_addr. : prefix: Parameters prefixed with this set the local SCCP address of this application &lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; local_addr.CallingPartyAddress.route=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.ssn=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.pointcode=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.nature=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.plan=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.translation=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.encoding= &lt;br /&gt;
 &lt;br /&gt;
 ; default_routing: bool : Do routing to default address for all messages&lt;br /&gt;
 ; default_routing=no&lt;br /&gt;
 &lt;br /&gt;
 ; default_addr. : prefix: parameters prefixed with this will be used as the default SCCP called address&lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; default_addr.application=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.route=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.ssn=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.pointcode=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.nature=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.translation=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.encoding=&lt;br /&gt;
 &lt;br /&gt;
 ; hlr_ssn: integer: The SSN expected in the calling address from a HLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;hlr_ssn=6&lt;br /&gt;
 &lt;br /&gt;
 ; vlr_ssn: integer: The SSN expected in the calling address from a VLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;vlr_ssn=7&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each section should have its own equivalent in ''camel_map.conf''.&lt;br /&gt;
In the USSD GW scenario, at least tho applications are needed, one acting as SCF, one as HLR. For load sharing multiple gsmSCF and HLR applications can be configured (see the configuration example below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 gsmSCF applications and 2 HLR applications, each one corresponding with a application section in the ''camel_map.conf'' example:&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 component_ttl=600000                                                                                                                         &lt;br /&gt;
 dialog_ended_ttl=0                                                                                                                           &lt;br /&gt;
 dispatcher_maxthreads=10                                                                                                                     &lt;br /&gt;
 dispatcher_minthreads=5                                                                                                                      &lt;br /&gt;
 ;dispatcher_priority=normal                                                                                                                  &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [ussdscf1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
&lt;br /&gt;
 [ussdscf2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
 &lt;br /&gt;
 [ussdhlr1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                         &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd                                                                                              &lt;br /&gt;
                                                   &lt;br /&gt;
 [ussdhlr2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
TODO - configuration explanations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''NOTE''' The module encodes text to ASCII for default encoding (configuration parameter ''default_encoding_type''). If you want to send GSM 7 Bit for SMPP default encoding, please see how the setting is set below.&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example''''&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
 server=smpp-server                                                                                                                           &lt;br /&gt;
 track_id=ussdgw                                                                                                                              &lt;br /&gt;
 track_id_base=ussdgw/                                                                                                                        &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [smpp-server]                                                                                                                                &lt;br /&gt;
 enable=true                                                                                                                                  &lt;br /&gt;
 session_responseinterval=600000                                                                                                              &lt;br /&gt;
 sessionset_process_max=1                                                                                                                     &lt;br /&gt;
 codec_warndefaults=false                                                                                                                     &lt;br /&gt;
 print-messages=no                                                                                                                            &lt;br /&gt;
                                                                                                                                            &lt;br /&gt;
 [listenerserver server]                                                                                                                      &lt;br /&gt;
 ;enable=yes                                                                                                                                  &lt;br /&gt;
 addr=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=12345&lt;br /&gt;
 ; use GSM 7 Bit for default SMPP encoding&lt;br /&gt;
 default_encoding_type=gsm7bit&lt;br /&gt;
&lt;br /&gt;
=== Monitoring ===&lt;br /&gt;
&lt;br /&gt;
This section details comands through which the state of the USSD GW can be monitored.&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
* '''Congestion state monitoring'''&lt;br /&gt;
&lt;br /&gt;
The ''ussd_map'' module will generate an alarm when entering/exiting a congestion state. If SNMP support is enabled, this will generate a trap on SNMP.&lt;br /&gt;
The congestion status is also reported in the ''state'' entry in the result of the module status command.&lt;br /&gt;
&lt;br /&gt;
* '''Module status'''&lt;br /&gt;
&lt;br /&gt;
The module reports its status through the following command in the YATE telnet console:&lt;br /&gt;
&lt;br /&gt;
 status ussd_map&lt;br /&gt;
&lt;br /&gt;
The command will print the following information:&lt;br /&gt;
&lt;br /&gt;
 workers=count_of_dispatching_threads,messages=count_msg,dialogs=count_of_dialogs,state=normal,count=count_of_applications;format=Type | CurrentDlgs| MAPCreated | UssdCreated |DefaultRouted | MAPSent | MapRecv | USSDSent | USSDRecv | MAPAbort | USSDAbort | BuiltAbort | MAPTimeouts | USSDTimeouts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
* workers: current number of used dispatching threads from the maximum configured pool (e.g., 3/10 means 3 threads are used of a pool of 10)&lt;br /&gt;
* messages: count of messages waiting on the dispatching queue of the engine&lt;br /&gt;
* dialogs: total number of USSD sessions currently handled by all applications&lt;br /&gt;
* state of the engine: normal/congestion&lt;br /&gt;
* count: number of applications acting either as gsmSCF, either as HLR&lt;br /&gt;
* format: name of the application for which the following data is reported:&lt;br /&gt;
** Type: role of the application: SCF (communicates with real HLR), HLR (communicates with real gsmSCF)&lt;br /&gt;
** CurrentDlgs: number of current MAP dialogs handled by this application&lt;br /&gt;
** MAPCreated: number of sessions (dialogs) started by the MAP side&lt;br /&gt;
** UssdCreated: number of sessions (dialogs) started by the SMPP side&lt;br /&gt;
** DefaultRouted: number of dialogs for which failover took place&lt;br /&gt;
** MAPSent: number of MAP messages sent to gsmSCF/HLR. It doesn't count the ones sent via failover routing.&lt;br /&gt;
** MAPRecv: number of MAP messages received from gsmSCF/HLR&lt;br /&gt;
** USSDSent: number of sent ussd.execute/ussd.update/ussd.finalize messages towards the SMPP side.&lt;br /&gt;
** USSDRecv: number of received ussd.execute/ussd.update/usdd.notify messages from SMPP side.&lt;br /&gt;
** MAPAbort: number of dialog aborts generated by MAP side&lt;br /&gt;
** USSDAbort: number of dialog aborts generated by USSD side&lt;br /&gt;
** BuiltAbort: number of dialog aborts generated by the ussd_map module (e.g., not having a ussd.update message processed by anyone will cause ussd_map to generate session abort)&lt;br /&gt;
** MAPTimeouts: number of dialog timeouts generated by MAP side&lt;br /&gt;
** USSDTimeouts: number of timeouts reported by USSD side&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Module control commands'''&lt;br /&gt;
&lt;br /&gt;
The module offers the following control commands through the telnet console:&lt;br /&gt;
* ''control ussd_map appName print-msg [yes|no|verbose]'' : enable printing of received/sent map./ussd./messages.&lt;br /&gt;
* ''control ussd_map appName print-xml [yes|no|verbose]'' : enable printing of received/sent XMLs.&lt;br /&gt;
* ''control ussd_map appName export-xml-as [string|object|both]'' : change the way XML is set in the internal messages&lt;br /&gt;
* ''control ussd_map start_stats'' : begin gathering data for statistics&lt;br /&gt;
* ''control ussd_map stop_stats'' : stop gathering data for statistics&lt;br /&gt;
* ''control usdd_map stats'' : print statistic data per engine and each application in part. Data contains number of MAP messages handled per second, number of USSD messages handled per second, maximum number of current dialogs, number of timeouts and number of aborts.&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
The ysmpp module provides the following options for status command:&lt;br /&gt;
&lt;br /&gt;
'NOTE' the module_name can take the following values: smppserver or smppclient.&lt;br /&gt;
&lt;br /&gt;
* status module_name listeners&lt;br /&gt;
Prints the module listeners status in format: Address|Status|Reason.&lt;br /&gt;
&lt;br /&gt;
* status module_name sessions&lt;br /&gt;
Prints the status of the sessions in format: Id|State|BindMode|SystemId|IpAddress:Port|Congested|Incoming Queue|Outgoing Queue;&lt;br /&gt;
&lt;br /&gt;
** Id: The ID of the SMPP session. Can be used for routing.&lt;br /&gt;
** State: The state of the SMPP session.&lt;br /&gt;
** BindMode: The mode in which the session was bound. (Send/Recv/SendRecv)&lt;br /&gt;
** SystemId: The id with which the session has been authenticated. Can be used in routing.&lt;br /&gt;
** IpAddress:Port: The Ip Address and port of the remote end of the session.&lt;br /&gt;
** Congested: True if this session is in congestion state.&lt;br /&gt;
** Incoming Queue: The number of messages not processed in the incoming queue.&lt;br /&gt;
** Outgoing Queue: The number of messages not processed in the outgoing queue.&lt;br /&gt;
&lt;br /&gt;
*status module_name ussd overview&lt;br /&gt;
Prints the stats of the USSD sessions in format: Total|Active|Average Duration|Total Sent|Total Received|AverageTrafficPerSecond|EndedWithErrors|CongestionRefused&lt;br /&gt;
&lt;br /&gt;
** Total: the number of USSD sessions created since the starting of the program.&lt;br /&gt;
** Active: the number of USSD sessions currently active.&lt;br /&gt;
** Average Duration: average duration of a ussd session.&lt;br /&gt;
** Total Sent: total number of SMPP messages sent for USSD sessions.&lt;br /&gt;
** Total Received: total number of SMPP messages received for USSD sessions.&lt;br /&gt;
** AverageTrafficPerSecond: average traffic per second for USSD sessions.&lt;br /&gt;
** EndedWithErrors: the number of USSD sessions that ended with error.&lt;br /&gt;
** CongestionRefused: the number of USSD sessions refused because the server was overloaded.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* Mobile Application Part (MAP) specification: ETSI TE 129 002&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/USSD_GW</id>
		<title>USSD GW</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/USSD_GW"/>
				<updated>2014-02-07T12:36:21Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: /* ysmpp module */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an implementation an USSD gateway acting as a MAP Service Control Function (gsmSCF) and as a HLR at the same time. When communicating with a HLR or VLR, the YATE USSD GW acts as a gsmSCF. When communicating with a gsmSCF, the YATE USSDGW acts as a HLR.&lt;br /&gt;
The functionality of the USSD GW allows:&lt;br /&gt;
* redirecting of USSD requests arriving either from user side or gsmSCF side to a SMPP client where they can be altered.&lt;br /&gt;
* acting as a proxy for requests that need not be handled by SMPP clients or when the SMPP handling fails&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MAP USSD description ==&lt;br /&gt;
&lt;br /&gt;
In versions 2 and 3 of the GSM MAP protocol there are 3 operations used for USSD operations:&lt;br /&gt;
* processUnstructedSS-Request&lt;br /&gt;
* unstructuredSS-Request&lt;br /&gt;
* unstrusturedSS-Notify&lt;br /&gt;
&lt;br /&gt;
The are 2 scenarios for USSD operations:&lt;br /&gt;
* mobile initiated USSD requests&lt;br /&gt;
* network initiated USSD requests&lt;br /&gt;
&lt;br /&gt;
A TCAP dialog used by USSD is always terminated by the network side.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mobile initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobile initiated USSD requests are USSD requests started by the mobile subscriber.  &lt;br /&gt;
&lt;br /&gt;
A USSD request is started when receiving a TCAP BEGIN message containing the ''processUnstructedSS-Request'' Invoke operation. The request can be handled by the VLR, HLR or a gsmSCF. If the VLR does not handle the request, it will transmit it to the HLR. The HLR can either handle it itself or it can transmit it to a gsmSCF for handling.&lt;br /&gt;
&lt;br /&gt;
At this point, the network can either send a response to the request immediately or request additional information. In the first case, the handler of the request will send a TCAP End with ''processUnstructuredSS-Request'' ResultLast containing the result for the request. &lt;br /&gt;
In the latter case, the network will send a TCAP CONTINUE with ''unstructuredSS-Request'' Invoke operation. The response of the mobile subscriber to this request will be passed to the network in a TCAP CONTINUE with ''unstructuredSS-Request'' ResultLast component. At this point, if the network decides that it has enough information for providing the response to the user, it will send a TCAP END with ''processUnstructuredSS-Request'' ResultLast. Otherwise, it can request further information through another ''unstructuredSS-Request'' Invoke operation.&lt;br /&gt;
&lt;br /&gt;
=== Network initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD requests are USSD requests started by the network towards a certain subscriber.&lt;br /&gt;
&lt;br /&gt;
Requests made by the network can be of one of two types:&lt;br /&gt;
* user interaction requests&lt;br /&gt;
* network notification requests.&lt;br /&gt;
&lt;br /&gt;
User interaction requests are USSD requests that the network makes in which it requires some type of information back from the mobile subscriber. These are started by the network through a TCAP BEGIN containing an ''unstructuredSS-Request'' Invoke. The answer from the mobile subscriber will be received in a TCAP CONTINUE containing an ''unstructuredSS-Request'' ResultLast. If the network still wants to request further information, it will repeat the process. Otherwise, it will send a TCAP END to close the TCAP dialog.&lt;br /&gt;
&lt;br /&gt;
Network notification requests are USSD requests in which the network only sends a notification to the user. This is achieved by sending a TCAP BEGIN message containing a ''unstructuredSS-Notify'' Invoke. The mobile subscriber side will only respond with a TCAP CONTINUE containing an empty ''unstructuredSS-Notify'' in order to signal that the notification was received. The network will close the TCAP dialog through TCAP END.&lt;br /&gt;
&lt;br /&gt;
=== MAP USSD parameters ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following list describe common parameters used across all MAP USSD operations:&lt;br /&gt;
* ''destinationReference'': this parameter will contain either an MSISDN or an IMSI. In the case of mobile originated USSD request, this will identify the user which made the request. In the case of network initiated requests, it will identify the mobile user to be contacted for this request.&lt;br /&gt;
* ''ussd-String'': for ''processUnstructuredSS-Request'' Invoke it contains the dialed USSD code, for the result it would probably contain a message from the network detailing the result of the request. For ''unstructuredSS-Request'' Invoke it will contain a message asking for the user to choose some option and for the result it will contain the option chosen by the user. In the case of ''unstructuredSS-Notify'', this parameter will only be present in the Invoke.&lt;br /&gt;
* ''ussd-DataCodingScheme'': this is a parameter which specifies in which way the ''ussd-String'' parameter is encoded and it is present whenever ''ussd-String'' is present. E.g., this parameter would indicate if the ''ussd-String'' is encoded using GSM7bit encoding or UCS2.&lt;br /&gt;
&lt;br /&gt;
== SMPP USSD description ==&lt;br /&gt;
&lt;br /&gt;
'''TO DO'''&lt;br /&gt;
&lt;br /&gt;
== System description ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== System design ===&lt;br /&gt;
&lt;br /&gt;
In order to provide the specified functionality, the system makes use of the following YATE components:&lt;br /&gt;
* the SS7 stack  present in YATE &lt;br /&gt;
* the camel_map module which decodes/encodes MAP messages coming from the SS7 network to/from internal YATE messages containing MAP operations in XML form. Together with the SS7 layer this provides MAP connectivity with HLR/gsmSCF.&lt;br /&gt;
* the ussd_map module which takes internal MAP messsages decoded by the camel_map moduled and translates them to internal USSD messages. This module acts as gsmSCF towards a HLR and as a HLR towards a gsmSCF.&lt;br /&gt;
* the SMPP stack present in YATE (ysmpp module) which is able to catch internal USSD messages and transmit them over SMPP. It also translates SMPP messages into internal USSD messages.&lt;br /&gt;
* requests for new USSD sessions will go through routing to decide who should handle the request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following sections detail the behaviour of the system in the different USSD scenarios.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mobile originated USSD handling ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A user initiated USSD session is handled according to the following schema:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# HLR sends a ''processUnstructuredSS-Request (Invoke)'' for code *100#. camel_map decodes the ''ussd-String'' into ''ussd-Text=*100#''.&lt;br /&gt;
# the ussd_map module (gsmSCF side) processes the request received from the HLR and emits a ''call.route'' message with ''called=*100#''.&lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with the ''callto'' parameter set to the value returned from routing. ussd_map dispatches the ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will send  it to the target specified in ''callto'' parameter after the module prefix ''ysmppserver/''.&lt;br /&gt;
# The ysmpp module receives and process the received ''submit_sm'' message.&lt;br /&gt;
# The ysmpp module will send a ''call.route'' message with the ''called=*100#''.&lt;br /&gt;
# The ysmpp module emits a ''ussd.execute'' message with ''callto=retvalue from call.route'' message.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ussd.execute message and if it is the target of the message, meaning that ''callto'' starts with ''ussd_map/''. From that message it will build a map.message that it will send to the gsmSCF as a ''processUnstructuresSS-Request (Invoke)'' MAP message.&amp;lt;br&amp;gt;'''NOTE:''' From here on, the gsmSCF could handle the request in one of  two distinguished cases: one where the gsmSCF requires interaction with the mobile subscriber and one where the gsmSCF just needs to respond to the user request. The following steps detail the former case.&amp;lt;br&amp;gt;&lt;br /&gt;
# gsmSCF sends an ''unstructuredSS-Request (Invoke)'' to  request further information.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits an ''ussd.update'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.update'' message and confirms to the SMPP client that the message sent in step 5 was processed.&lt;br /&gt;
# The SMPP client should confirm the processing of the SMPP message sent in step 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver_sm'' message to the SMPP client with the menu received in ''ussd.update'' message.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message with the received menu.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message from SMPP client and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.update'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time in which the mobile subscribers responds can be quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway when receiving the response from the mobile subscriber.&lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 13.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 21.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 9 and 24 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''processUnstructuredSS-Request (ResultLast)''  for the initial user request.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''processUnstructuredSS-Request (ResultLast)'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 22 or 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 21 or 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 31.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 29.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''processUnstructuredSS-Request (ResultLast)''.&lt;br /&gt;
&lt;br /&gt;
==== Network initiated USSD Request ====&lt;br /&gt;
&lt;br /&gt;
A network initiated USSD session is handled as described in the following figure:&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
# gsmSCF sends''unstructuredSS-Request (Invoke)'' to USSD Gateway (HLR part) to present a menu for MSISDN 0015559191.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits a ''call.route'' message with called=0015559191. &lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with ''callto'' set to the route returned in the return value of the ''call.route'' message and dispatches an ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will then send to the target specified in the ''callto'&amp;quot; parameter after the ''ysmppserver'' module prefix.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message towards SMPP server.&lt;br /&gt;
# The SMPP server processes the received ''submit_sm'' message and dispatches a ''call.route'' message.&lt;br /&gt;
# After successfully dispatching of ''call.route'' message the SMPP server will dispatch a ''call.execute'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.execute'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time to receiving a response from the user after gsmSCF has requested user interaction could be possibly quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway &lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 4.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 13.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 1 and 16 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''TCAP END'' in order to finish the USSD session.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''TCAP END'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 13.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 22.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 21.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''END''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fallback/Proxy mode ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following images detail scenarios where the USSD GW is instructed to do failover.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when an HLR sends ''processUnstructuredSS-Request (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:''' &lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message. &lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD session fallback.&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when a gsmSCF sends a &amp;quot;unstructuredSS-Request/unstructuredSS-Notify (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:'''&lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message.&lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The SMPP USSD gateway will also be bypassed when the ''ussd_map'' module is configured to do failover for all requests.&lt;br /&gt;
&lt;br /&gt;
Any type of SMPP error received either in the result for the ''ussd.execute'' or in the first message back from SMPP that does not have a mapping on MAP will lead to the ''ussd_map'' module doing failover. Errors that would generate a failover are errors like timeout, session ended abnormally, unknown errors, congestion errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once ''ussd_map'' decides that failover should be done, it will use the original received message  from the HLR (MO case)/gsmSCF (MT case) and it will only alter the called address to be the one of the gsmSCF/HLR set for the failover.. The calling address will remain the one received from HLR/gsmSCF, the idea being that for the first message we want to pretend that we are the original gsmSCF/HLR. When the receiving end of this message will want to respond, it will use the calling address from the message. Seeing that the ''ussd_map'' module set it to the original calller's address, further messages exchanged in that dialog between HLR and gsmSCF will not pass through USSD GW again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Internal message API ====&lt;br /&gt;
&lt;br /&gt;
This section documents the YATE messages used internally by the USSD GW.&lt;br /&gt;
&lt;br /&gt;
===== call.route =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used by ussd_map and ysmpp module to determine a destination where a new USSD session should be sent for further processing.&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module when receiving a request for a new USSD session on MAP for ''ussd_map'' or on SMPP for ''ysmpp''.&lt;br /&gt;
''ussd_map'' will only send this message if default routing is not enabled from configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
* module&lt;br /&gt;
** type: string &lt;br /&gt;
** Name of the module which requested routing&lt;br /&gt;
* application&lt;br /&gt;
** type: string&lt;br /&gt;
** Name of the ussd_map application which sent this routing request&lt;br /&gt;
* route_type&lt;br /&gt;
** type: keyword, value: ussd &lt;br /&gt;
** Specifies routing type, in this case it'll be USSD routing&lt;br /&gt;
* smpp_session_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
* smpp_system_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* if the message was processed, the return value of the message indicates the destination of the subsequent ''ussd.execute'' message.&lt;br /&gt;
* if the message was not processed or it returned with error (signaled by the return value being either &amp;quot;-&amp;quot; or &amp;quot;error&amp;quot;)&lt;br /&gt;
** ''ussd_map'' will do failover&lt;br /&gt;
** ysmpp will close the SMPP session, indicating an error either set by the call.route or either set to the default unknown error indication.&lt;br /&gt;
&lt;br /&gt;
===== ussd.execute =====&lt;br /&gt;
&lt;br /&gt;
This message is used to begin a new USSD session:&lt;br /&gt;
* on SMPP, if the message is directed to the ''ysmpp'' module&lt;br /&gt;
* on MAP if the message is directed to the ''ussd_map'' module&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module after successful routing stage. In case of the ''ussd_map'' module, this is message is sent if the routing stage did not indicate failover necessity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* callto:  &lt;br /&gt;
** type : string&lt;br /&gt;
** It specifies the target module to process the message. The string should start with  'ysmppserver/' for the  ''ysmpp&amp;quot; module and with ''ussd_map/'' for the ''ussd_map'' module.&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier assigned for this USSD session by the entity that processed this message.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error returned if the message was not processed.&lt;br /&gt;
&lt;br /&gt;
Processing of this message will return failure:&lt;br /&gt;
* if the message will not be processed&lt;br /&gt;
* if the 'id' parameter is missing.&lt;br /&gt;
* in case of processing error &lt;br /&gt;
* in case of congestion&lt;br /&gt;
&lt;br /&gt;
===== ussd.update =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used for transmitting USSD messages during a USSD session. This type of message will be used after the initial stage of creating the session through ''ussd.execute'' has succeeded.&lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP CONTINUE message &lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will be refused if it is received after a ''ussd.finalize'' message.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a values not allowed in the context of the USSD session (e.g., sending a ''processUnstructuredSS-Request inside a ''ussd.update'' message)&lt;br /&gt;
&lt;br /&gt;
===== ussd.finalize =====&lt;br /&gt;
&lt;br /&gt;
This message is used to signal the termination of the USSD session. Successful processing of this message means that the USSD session was terminated and is no longer available. &lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP END/ABORT message depending upon the parameters received. A message containing an error that does not map to a MAP error will generate a TCAP ABORT.&lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client, a message that will usually contain a last message indication.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by 'peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a value not allowed in the context of the USSD session&lt;br /&gt;
&lt;br /&gt;
===== Keyword values =====&lt;br /&gt;
&lt;br /&gt;
This section details acceptable values for parameters listed as having type ''keyword''.&lt;br /&gt;
&lt;br /&gt;
* '''hlr.nature/vlr.nature/gsmscf.nature/destination_reference.nature'''&lt;br /&gt;
** unknown&lt;br /&gt;
** international&lt;br /&gt;
** national&lt;br /&gt;
** network-specific&lt;br /&gt;
** subscriber&lt;br /&gt;
** abbreviated&lt;br /&gt;
&lt;br /&gt;
* '''hlr.plan/vlr.plan/gsmscf.plan/destination_reference.plan'''&lt;br /&gt;
** unknown&lt;br /&gt;
** isdn&lt;br /&gt;
** data&lt;br /&gt;
** telex&lt;br /&gt;
** land-mobile&lt;br /&gt;
** national&lt;br /&gt;
** private&lt;br /&gt;
&lt;br /&gt;
* '''operation_type'''&lt;br /&gt;
** pssd: mapping of MAP v1 USSD operation ''processUnstructuredSS-Data'' and of SMPP operation ''PSSD''. &lt;br /&gt;
** pssr: mapping of MAP v2 USSD operation ''processUnstructuredSS-Request'' and of SMPP operation ''PSSR''.&lt;br /&gt;
** ussr: mapping of MAP v2 USSD operation ''unstructuredSS-Request'' and of SMPP operation ''USSR&amp;quot;.&lt;br /&gt;
** ussn: mapping of MAP v2 USSD operation ''unstructuredSS-Notify'' and of SMPP operation ''USSN''.&lt;br /&gt;
&lt;br /&gt;
* '''error'''&lt;br /&gt;
** invalid_logic:  error reported when required processing does not follow USSD rules (e.g., MT request starting with ''processUnstructuredSS-Requests'')&lt;br /&gt;
** system_failure: error mapping for MAP error ''systemFailure''.&lt;br /&gt;
** data_missing: error mapping for  MAP error ''dataMissing''.&lt;br /&gt;
** unexpected_data: error mapping for MAP error ''unexpectedDataValue''.&lt;br /&gt;
** unknown_alphabet: error mapping for MAP error ''unknownAlphabet''.&lt;br /&gt;
** absent_subscriber: error mapping for MAP error ''absentSubscriber''.&lt;br /&gt;
** illegal_subscriber: error mapping for MAP error ''illegalSubscriber''.&lt;br /&gt;
** illegal_equipment: error mapping for MAP error ''illegalEquipment''.&lt;br /&gt;
** ussd_busy: error mapping for MAP error ''ussd-Busy''.&lt;br /&gt;
** call_barred: error mapping for MAP error ''callBarred''.&lt;br /&gt;
** network_failure: error signaling message transmission failure due to  connectivity issues either on the SS7 side or SMPP side.&lt;br /&gt;
** timeout_expired: error signaling a  request timeout occurrence.&lt;br /&gt;
** ussd_sess_end_abnormally: error signaling USSD session termination due to an unknown cause. Mapping for this error implies a TCAP Abort either being generated of received. &lt;br /&gt;
** unknown_error: error specified when there is no available mapping for an errror from SMPP to MAP or vice versa.&lt;br /&gt;
** throttling_error: error signaling that a message failed to be processed due to processing side being in congestion state.&lt;br /&gt;
** protocol_error: SMPP generic error. This error is put whenever there is a SMPP specific error that cannot be mapped into one of the other errors.&lt;br /&gt;
&lt;br /&gt;
* '''text.encoding'''&lt;br /&gt;
** gsm7bit / GSM7Bit: text was encoded/is to be encoded GSM 7 Bit&lt;br /&gt;
** ucs2 / UCS2: text was encoded/is to be encoded UCS 2&lt;br /&gt;
&lt;br /&gt;
* '''text.lang'''&lt;br /&gt;
**  two character string specifying a language according to ISO 639-1 or integer value if mapping is not provided.&lt;br /&gt;
&lt;br /&gt;
==== SMPP custom parameters ====&lt;br /&gt;
&lt;br /&gt;
* 0x1502 =&amp;gt; IMSI;&lt;br /&gt;
* 0x1503 =&amp;gt; VLR Type of Number;&lt;br /&gt;
* 0x1504 =&amp;gt; VLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1505 =&amp;gt; VLR address;&lt;br /&gt;
* 0x1506 =&amp;gt; GSM SCF Type of Number;&lt;br /&gt;
* 0x1507 =&amp;gt; GSM SCF Numbering Plan Indicator;&lt;br /&gt;
* 0x1508 =&amp;gt; GSM_SCF address;&lt;br /&gt;
* 0x1509 =&amp;gt; Destination Reference Type of Number;&lt;br /&gt;
* 0x150a =&amp;gt; Destination Reference Numbering Plan Indicator;&lt;br /&gt;
* 0x150b =&amp;gt; Destination Reference;&lt;br /&gt;
* 0x150c =&amp;gt; MSISDN&lt;br /&gt;
* 0x150d =&amp;gt; Alerting Pattern&lt;br /&gt;
* 0x1800 =&amp;gt; HLR Type of Number;&lt;br /&gt;
* 0x1801 =&amp;gt; HLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1802 =&amp;gt; HLR address.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
==== ysigchan module ====&lt;br /&gt;
&lt;br /&gt;
In order to have MAP connectivity, TCAP instances must be configured in ''ysigchan.conf'': &lt;br /&gt;
&lt;br /&gt;
 ; Example of a SS7 Transaction Capabilities Application Part&lt;br /&gt;
 ; This component is created when encountering a section of this kind&lt;br /&gt;
 ;[ss7tcap]&lt;br /&gt;
 ; type: keyword: identifies the component as a SS7 Transfer Capabilities Application Part&lt;br /&gt;
 ; type = ss7-tcap-ansi for ANSI TCAP&lt;br /&gt;
 ; type = ss7-tcap-itu for ITU TCAP&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; local_SSN: local SubSystem Number. Mandatory&lt;br /&gt;
 ;local_SSN=&lt;br /&gt;
 &lt;br /&gt;
 ; default_remote_SSN: remote SubSystem Number to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_SSN=&lt;br /&gt;
  &lt;br /&gt;
 ; default_remote_pointcode: remote Point Code to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_pointcode=&lt;br /&gt;
 &lt;br /&gt;
 ; pointcodetype: remote Point Code type. See above documentation for available types&lt;br /&gt;
 ;pointcodetype=&lt;br /&gt;
 &lt;br /&gt;
 ; sccp: Name of the SCCP component to create and be used by this TCAP&lt;br /&gt;
 ; A section with the name given here must exist in order to configure the SCCP level&lt;br /&gt;
 ;sccp=&lt;br /&gt;
 &lt;br /&gt;
 ; default_hopcounter: HopCounter provided to SCCP if the application does not provide one&lt;br /&gt;
 ; Values range 1-15, 0 or boolean false disables, boolean true sets to 15&lt;br /&gt;
 ; A non-zero value will force using XUDT or LUDT instead of UDT messages&lt;br /&gt;
 ;default_hopcounter=false&lt;br /&gt;
 &lt;br /&gt;
 ; transact_timeout: Time in seconds to timeout a TCAP transaction after no more activity was registered on it&lt;br /&gt;
 ; NOTE: Values below 15 seconds will be ignored and the timer will assume the default value.&lt;br /&gt;
 ; Defaults to 300 seconds&lt;br /&gt;
 ;transact_timeout=300&lt;br /&gt;
 &lt;br /&gt;
 ; max_timeout_checks: integer: Maximum number of timeout checks done on a transaction without starting the transaction&lt;br /&gt;
 ;  timer before forcefully starting the transaction timer&lt;br /&gt;
 ; Defaults to 10&lt;br /&gt;
 ;max_timeout_checks=10 &lt;br /&gt;
 &lt;br /&gt;
 ; timeout_check: Time interval in milliseconds to check for timeouts.&lt;br /&gt;
 ; Default to 100 ms&lt;br /&gt;
 ;timeout_check=100 &lt;br /&gt;
 &lt;br /&gt;
 ; floodevents: int: How many queued incoming TCAP messages trigger a congestion warning and the drop mechanism&lt;br /&gt;
 ;  for Unidirectional/Begin/QueryWithPermission/QueryWithoutPermission messages.&lt;br /&gt;
 ;  Exit from congestion will take place when there are less the floodevents/4 messages in the queue&lt;br /&gt;
 ; NOTE! Setting this parameter to 0 will disable the congestion warning and protection. Setting it to one will &lt;br /&gt;
 ;  be overriden and floodevents will be set to 2.&lt;br /&gt;
 ;floodevents=1000&lt;br /&gt;
 &lt;br /&gt;
 ;print-messages: Boolean to enable/disable printing of decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ;extended-debug: Boolean to enable/disable printing of the step-by-step decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload. print-messages must be true.&lt;br /&gt;
 ;extended-debug=false&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for keeping the list of current transactions&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
 [tcap-scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=147                                                                                                                                &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                     &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap-hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=7                                                                                                                                  &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Further configuration for SS7 connectivity is required (SCCP, MTP3, etc.).&lt;br /&gt;
&lt;br /&gt;
==== camel_map module ====&lt;br /&gt;
&lt;br /&gt;
Configuring of tracking IDs is done in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ;track_id: string: Shared engine variable name used to obtain a unique tracking ID for TCAP transactions&lt;br /&gt;
 ; If not set, the module will not set a tracking ID for the TCAP transaction&lt;br /&gt;
 ;track_id=&lt;br /&gt;
 &lt;br /&gt;
 ;track_id_base: string: Optional string with which to prefix the tracking ID&lt;br /&gt;
 ; This setting has no effect if track_id is not set&lt;br /&gt;
 ;track_id_base=&lt;br /&gt;
&lt;br /&gt;
In order to allow communication over MAP through SS7, sections configurating application should exist for each role of the ussd_map module (gsmSCF/HLR). A ''camel_map.conf'' section configuring an application looks like this:&lt;br /&gt;
 &lt;br /&gt;
 ;[local appName]&lt;br /&gt;
 ; This section configures a local application which transmits the XML messages as internal Yate messages&lt;br /&gt;
 &lt;br /&gt;
 ; translator: string: name of translator to be used by this application.&lt;br /&gt;
 ; Must be one one the [tcap ...] sections configured in the camel_map.conf file.&lt;br /&gt;
 ;translator=&lt;br /&gt;
  &lt;br /&gt;
 ; capabilities: string: List of capabilities separated by commas which this application supports&lt;br /&gt;
 ;capabilities=&lt;br /&gt;
  &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into a Yate message&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - string: pass the XML as a string&lt;br /&gt;
 ;  - object: pass the XML as an object&lt;br /&gt;
 ;  - both: pass the XML as a string and object&lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; enable: bool: Enable this application&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
&lt;br /&gt;
The translator setting refers to a section of the type defined below which configures atachement to a TCAP instance&lt;br /&gt;
&lt;br /&gt;
 ;[tcap map]&lt;br /&gt;
 ; This section configures a TCAP User MAP/CAMEL protocol translator&lt;br /&gt;
 &lt;br /&gt;
 ; enable: bool: Enable this translator&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of TCAP User &lt;br /&gt;
 ; Allowed values are MAP or CAMEL&lt;br /&gt;
 ;type=MAP&lt;br /&gt;
 &lt;br /&gt;
 ; host: IP address: Address on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ;host=127.0.0.1 &lt;br /&gt;
 &lt;br /&gt;
 ; port: integer: Port on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ; Note: setting port to 0 will disable the listener, so it will not accept TCP applications&lt;br /&gt;
 ;port=5555&lt;br /&gt;
 &lt;br /&gt;
 ; tcap: string: Name of TCAP to which this TCAP user should attach itself to for the SS7 communication&lt;br /&gt;
 ;tcap=&lt;br /&gt;
 &lt;br /&gt;
 ; add-encoding: bool: Always add encoding attribute to XML elements for decoded parameters&lt;br /&gt;
 ;add-encoding=default from [general]&lt;br /&gt;
 &lt;br /&gt;
 ; add-timestamp: bool: Add to XML timestamps used for estimating application latency&lt;br /&gt;
 ;add-timestamp=default from [general] &lt;br /&gt;
 &lt;br /&gt;
 ; print-messages: bool: Debug option to print TCAP and XML messages. This option is applicable on reload.&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-string: string: Specifies what the ussd-String parameter will contain as data&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - octets: ussd-String will contain the octets as they were received&lt;br /&gt;
 ;  - text: ussd-String will contain the GSM7Bit decoded text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-string=text&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-decode: string: Specifies what ussd-String parameters should be decoded into text&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - none: ussd-String parameters will never be decoded into text&lt;br /&gt;
 ;  - first: ussd-String in a TCAP Begin message will be decoded into text&lt;br /&gt;
 ;  - all: all ussd-String parameters will be decoded into text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-decode=all&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for mapping of TCAP transactions to applications&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For load sharing (especially in cases of high loads), you can configure multiple applications using the same translator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 applications acting as a gsmSCF, each one attached to the TCAP instance with gsmSCF SSN, and 2 applications as HLR, each one attached to the TCAP instance with HLR SSN 6:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 track_id=ussdgw&lt;br /&gt;
 track_id_base=ussdgw/&lt;br /&gt;
 &lt;br /&gt;
 [tcap scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-scf                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false                                                                                                                           &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-hlr                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false   &lt;br /&gt;
 &lt;br /&gt;
 [local ussdscf1]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all                                                                                                                            &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [local ussdscf2]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all               &lt;br /&gt;
 &lt;br /&gt;
 [local ussdhlr1]&lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all                                                                                                                            &lt;br /&gt;
 &lt;br /&gt;
 [local ussdhlr2]                                                                                                                             &lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all&lt;br /&gt;
&lt;br /&gt;
'''Note''' If SMPP is configured to expect decoded USSD texts (which is the default configuration), the ''ussd-decode'' configuration setting should be set to ''all''.&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
The module is configured through ''ussd_map.conf''. The configuration file sets timeout parameters and processing threads parameters in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList for keeping dialogs&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
 &lt;br /&gt;
 ; component_ttl: integer: Component time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; Defaults to 600000 (10 minutes)&lt;br /&gt;
 ;component_ttl=600000&lt;br /&gt;
 &lt;br /&gt;
 ; dialog_idle_ttl: integer: Dialog idle (nothing sent/received) time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; It can be set to 0 to keep it alive until the remote party terminates the dialog&lt;br /&gt;
 ; Defaults to 86400000 (1 day)&lt;br /&gt;
 ;dialog_idle_ttl=86400000&lt;br /&gt;
&lt;br /&gt;
 ; dialog_ended_ttl: integer: Ended dialog time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000.&lt;br /&gt;
 ; It can be set to 0 to remove the dialog after termination&lt;br /&gt;
 ; Defaults to 0&lt;br /&gt;
 ;dialog_ended_ttl=0&lt;br /&gt;
 &lt;br /&gt;
 ; dispatcher_maxthreads: integer: Maximum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ; NOTE: if the value is set to 0, the module will enqueue the messages into YATE's engine.&lt;br /&gt;
 ;dispatcher_maxthreads=0&lt;br /&gt;
&lt;br /&gt;
 ; dispatcher_minthreads: integer: Minimum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ;dispatcher_minthreads=1&lt;br /&gt;
&lt;br /&gt;
 ;dispatcher_priority: string: Default priority of message dispatch threads&lt;br /&gt;
 ;dispatcher_priority=normal&lt;br /&gt;
&lt;br /&gt;
 ; floodevents: integer: Threshold for signaling congestion when the number of messages waiting to be dispatched exceeds it.&lt;br /&gt;
 ; When entering congestion, all new MAP dialogs and USSD sessions will be refused.&lt;br /&gt;
 ; 0 disables the mechanism&lt;br /&gt;
 ;floodevents=0&lt;br /&gt;
&lt;br /&gt;
 ; congestion_exit_factor: double: Factor used to calculate the exit congestion threshold&lt;br /&gt;
 ; NOTE: if the factor results in a exit congestion threshold of 0 or greater than floodevents, &lt;br /&gt;
 ; the setting will be overriden and the exit congestion threshold will be set to 1.&lt;br /&gt;
 ;congestion_exit_factor=0.5&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Timeout settings should be correlated with timeout settings in TCAP and SMPP, each having its own timeout mechanism.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gateway applications which do the MAP &amp;lt;-&amp;gt; USSD translation are configured through section like the one below:&lt;br /&gt;
&lt;br /&gt;
 [appName]&lt;br /&gt;
 ; section name is the name of the camel_map application, it must correspond to a [local appName] section in camel_map &lt;br /&gt;
&lt;br /&gt;
 ; enable: boolean: Enable this application&lt;br /&gt;
 ; Defaults to yes&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of MAP &amp;lt;-&amp;gt; USSD translator: &lt;br /&gt;
 ;  - SCF means that is the part that receives new dialogs from the HLR (user initiated USSD)&lt;br /&gt;
 ;  - HLR is the part that receives new dialogs from gsmSCF (network initiated USSD)&lt;br /&gt;
 ; This setting cannot be changed on reload.&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into &lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; print_msg: boolean: Print sent/received messages to output&lt;br /&gt;
 ;print_msg=no&lt;br /&gt;
  &lt;br /&gt;
 ; print_xml: boolean: Print sent/received XML data to output&lt;br /&gt;
 ;print_xml=no&lt;br /&gt;
 &lt;br /&gt;
 ; local_addr. : prefix: Parameters prefixed with this set the local SCCP address of this application &lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; local_addr.CallingPartyAddress.route=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.ssn=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.pointcode=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.nature=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.plan=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.translation=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.encoding= &lt;br /&gt;
 &lt;br /&gt;
 ; default_routing: bool : Do routing to default address for all messages&lt;br /&gt;
 ; default_routing=no&lt;br /&gt;
 &lt;br /&gt;
 ; default_addr. : prefix: parameters prefixed with this will be used as the default SCCP called address&lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; default_addr.application=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.route=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.ssn=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.pointcode=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.nature=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.translation=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.encoding=&lt;br /&gt;
 &lt;br /&gt;
 ; hlr_ssn: integer: The SSN expected in the calling address from a HLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;hlr_ssn=6&lt;br /&gt;
 &lt;br /&gt;
 ; vlr_ssn: integer: The SSN expected in the calling address from a VLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;vlr_ssn=7&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each section should have its own equivalent in ''camel_map.conf''.&lt;br /&gt;
In the USSD GW scenario, at least tho applications are needed, one acting as SCF, one as HLR. For load sharing multiple gsmSCF and HLR applications can be configured (see the configuration example below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 gsmSCF applications and 2 HLR applications, each one corresponding with a application section in the ''camel_map.conf'' example:&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 component_ttl=600000                                                                                                                         &lt;br /&gt;
 dialog_ended_ttl=0                                                                                                                           &lt;br /&gt;
 dispatcher_maxthreads=10                                                                                                                     &lt;br /&gt;
 dispatcher_minthreads=5                                                                                                                      &lt;br /&gt;
 ;dispatcher_priority=normal                                                                                                                  &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [ussdscf1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
&lt;br /&gt;
 [ussdscf2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
 &lt;br /&gt;
 [ussdhlr1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                         &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd                                                                                              &lt;br /&gt;
                                                   &lt;br /&gt;
 [ussdhlr2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
TODO - configuration explanations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''NOTE''' The module encodes text to ASCII for default encoding (configuration parameter ''default_encoding_type''). If you want to send GSM 7 Bit for SMPP default encoding, please see how the setting is set below.&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example''''&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
 server=smpp-server                                                                                                                           &lt;br /&gt;
 track_id=ussdgw                                                                                                                              &lt;br /&gt;
 track_id_base=ussdgw/                                                                                                                        &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [smpp-server]                                                                                                                                &lt;br /&gt;
 enable=true                                                                                                                                  &lt;br /&gt;
 session_responseinterval=600000                                                                                                              &lt;br /&gt;
 sessionset_process_max=1                                                                                                                     &lt;br /&gt;
 codec_warndefaults=false                                                                                                                     &lt;br /&gt;
 print-messages=no                                                                                                                            &lt;br /&gt;
                                                                                                                                            &lt;br /&gt;
 [listenerserver server]                                                                                                                      &lt;br /&gt;
 ;enable=yes                                                                                                                                  &lt;br /&gt;
 addr=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=12345&lt;br /&gt;
 ; use GSM 7 Bit for default SMPP encoding&lt;br /&gt;
 default_encoding_type=gsm7bit&lt;br /&gt;
&lt;br /&gt;
=== Monitoring ===&lt;br /&gt;
&lt;br /&gt;
This section details comands through which the state of the USSD GW can be monitored.&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
* '''Congestion state monitoring'''&lt;br /&gt;
&lt;br /&gt;
The ''ussd_map'' module will generate an alarm when entering/exiting a congestion state. If SNMP support is enabled, this will generate a trap on SNMP.&lt;br /&gt;
The congestion status is also reported in the ''state'' entry in the result of the module status command.&lt;br /&gt;
&lt;br /&gt;
* '''Module status'''&lt;br /&gt;
&lt;br /&gt;
The module reports its status through the following command in the YATE telnet console:&lt;br /&gt;
&lt;br /&gt;
 status ussd_map&lt;br /&gt;
&lt;br /&gt;
The command will print the following information:&lt;br /&gt;
&lt;br /&gt;
 workers=count_of_dispatching_threads,messages=count_msg,dialogs=count_of_dialogs,state=normal,count=count_of_applications;format=Type | CurrentDlgs| MAPCreated | UssdCreated |DefaultRouted | MAPSent | MapRecv | USSDSent | USSDRecv | MAPAbort | USSDAbort | BuiltAbort | MAPTimeouts | USSDTimeouts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
* workers: current number of used dispatching threads from the maximum configured pool (e.g., 3/10 means 3 threads are used of a pool of 10)&lt;br /&gt;
* messages: count of messages waiting on the dispatching queue of the engine&lt;br /&gt;
* dialogs: total number of USSD sessions currently handled by all applications&lt;br /&gt;
* state of the engine: normal/congestion&lt;br /&gt;
* count: number of applications acting either as gsmSCF, either as HLR&lt;br /&gt;
* format: name of the application for which the following data is reported:&lt;br /&gt;
** Type: role of the application: SCF (communicates with real HLR), HLR (communicates with real gsmSCF)&lt;br /&gt;
** CurrentDlgs: number of current MAP dialogs handled by this application&lt;br /&gt;
** MAPCreated: number of sessions (dialogs) started by the MAP side&lt;br /&gt;
** UssdCreated: number of sessions (dialogs) started by the SMPP side&lt;br /&gt;
** DefaultRouted: number of dialogs for which failover took place&lt;br /&gt;
** MAPSent: number of MAP messages sent to gsmSCF/HLR. It doesn't count the ones sent via failover routing.&lt;br /&gt;
** MAPRecv: number of MAP messages received from gsmSCF/HLR&lt;br /&gt;
** USSDSent: number of sent ussd.execute/ussd.update/ussd.finalize messages towards the SMPP side.&lt;br /&gt;
** USSDRecv: number of received ussd.execute/ussd.update/usdd.notify messages from SMPP side.&lt;br /&gt;
** MAPAbort: number of dialog aborts generated by MAP side&lt;br /&gt;
** USSDAbort: number of dialog aborts generated by USSD side&lt;br /&gt;
** BuiltAbort: number of dialog aborts generated by the ussd_map module (e.g., not having a ussd.update message processed by anyone will cause ussd_map to generate session abort)&lt;br /&gt;
** MAPTimeouts: number of dialog timeouts generated by MAP side&lt;br /&gt;
** USSDTimeouts: number of timeouts reported by USSD side&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Module control commands'''&lt;br /&gt;
&lt;br /&gt;
The module offers the following control commands through the telnet console:&lt;br /&gt;
* ''control ussd_map appName print-msg [yes|no|verbose]'' : enable printing of received/sent map./ussd./messages.&lt;br /&gt;
* ''control ussd_map appName print-xml [yes|no|verbose]'' : enable printing of received/sent XMLs.&lt;br /&gt;
* ''control ussd_map appName export-xml-as [string|object|both]'' : change the way XML is set in the internal messages&lt;br /&gt;
* ''control ussd_map start_stats'' : begin gathering data for statistics&lt;br /&gt;
* ''control ussd_map stop_stats'' : stop gathering data for statistics&lt;br /&gt;
* ''control usdd_map stats'' : print statistic data per engine and each application in part. Data contains number of MAP messages handled per second, number of USSD messages handled per second, maximum number of current dialogs, number of timeouts and number of aborts.&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
The ysmpp module provides the following options for status command:&lt;br /&gt;
&lt;br /&gt;
'NOTE' the module_name can take the following values: smppserver or smppclient.&lt;br /&gt;
&lt;br /&gt;
* status module_name listeners&lt;br /&gt;
Prints the module listeners status in format: Address|Status|Reason.&lt;br /&gt;
&lt;br /&gt;
* status module_name sessions&lt;br /&gt;
Prints the status of the sessions in format: Id|State|BindMode|SystemId|IpAddress:Port|Congested|Incoming Queue|Outgoing Queue;&lt;br /&gt;
&lt;br /&gt;
** Id: The ID of the SMPP session. Can be used for routing.&lt;br /&gt;
** State: The state of the SMPP session.&lt;br /&gt;
** BindMode: The mode in which the session was bound. (Send/Recv/SendRecv)&lt;br /&gt;
** SystemId: The id with which the session has been authenticated. Can be used in routing.&lt;br /&gt;
** IpAddress:Port: The Ip Address and port of the remote end of the session.&lt;br /&gt;
** Congested: True if this session is in congestion state.&lt;br /&gt;
** Incoming Queue: The number of messages not processed in the incoming queue.&lt;br /&gt;
** Outgoing Queue: The number of messages not processed in the outgoing queue.&lt;br /&gt;
&lt;br /&gt;
*status module_name ussd overview&lt;br /&gt;
Prints the stats of the USSD sessions in format: Total|Active|Average Duration|Total Sent|Total Received|AverageTrafficPerSecond|EndedWithErrors|CongestionRefused&lt;br /&gt;
&lt;br /&gt;
** Total: the number of USSD sessions created since the starting of the program.&lt;br /&gt;
** Active: the number of USSD sessions currently active.&lt;br /&gt;
** Average Duration: average duration of a ussd session.&lt;br /&gt;
** Total Sent: total number of SMPP messages sent for USSD sessions.&lt;br /&gt;
** Total Received: total number of SMPP messages received for USSD sessions.&lt;br /&gt;
** AverageTrafficPerSecond: average traffic per second for USSD sessions.&lt;br /&gt;
** EndedWithErrors: the number of USSD sessions that ended with error.&lt;br /&gt;
** CongestionRefused: the number of USSD sessions refused because the server was overloaded.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* Mobile Application Part (MAP) specification: ETSI TE 129 002&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/USSD_GW</id>
		<title>USSD GW</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/USSD_GW"/>
				<updated>2014-02-07T12:34:52Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: /* camel_map module */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an implementation an USSD gateway acting as a MAP Service Control Function (gsmSCF) and as a HLR at the same time. When communicating with a HLR or VLR, the YATE USSD GW acts as a gsmSCF. When communicating with a gsmSCF, the YATE USSDGW acts as a HLR.&lt;br /&gt;
The functionality of the USSD GW allows:&lt;br /&gt;
* redirecting of USSD requests arriving either from user side or gsmSCF side to a SMPP client where they can be altered.&lt;br /&gt;
* acting as a proxy for requests that need not be handled by SMPP clients or when the SMPP handling fails&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MAP USSD description ==&lt;br /&gt;
&lt;br /&gt;
In versions 2 and 3 of the GSM MAP protocol there are 3 operations used for USSD operations:&lt;br /&gt;
* processUnstructedSS-Request&lt;br /&gt;
* unstructuredSS-Request&lt;br /&gt;
* unstrusturedSS-Notify&lt;br /&gt;
&lt;br /&gt;
The are 2 scenarios for USSD operations:&lt;br /&gt;
* mobile initiated USSD requests&lt;br /&gt;
* network initiated USSD requests&lt;br /&gt;
&lt;br /&gt;
A TCAP dialog used by USSD is always terminated by the network side.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mobile initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobile initiated USSD requests are USSD requests started by the mobile subscriber.  &lt;br /&gt;
&lt;br /&gt;
A USSD request is started when receiving a TCAP BEGIN message containing the ''processUnstructedSS-Request'' Invoke operation. The request can be handled by the VLR, HLR or a gsmSCF. If the VLR does not handle the request, it will transmit it to the HLR. The HLR can either handle it itself or it can transmit it to a gsmSCF for handling.&lt;br /&gt;
&lt;br /&gt;
At this point, the network can either send a response to the request immediately or request additional information. In the first case, the handler of the request will send a TCAP End with ''processUnstructuredSS-Request'' ResultLast containing the result for the request. &lt;br /&gt;
In the latter case, the network will send a TCAP CONTINUE with ''unstructuredSS-Request'' Invoke operation. The response of the mobile subscriber to this request will be passed to the network in a TCAP CONTINUE with ''unstructuredSS-Request'' ResultLast component. At this point, if the network decides that it has enough information for providing the response to the user, it will send a TCAP END with ''processUnstructuredSS-Request'' ResultLast. Otherwise, it can request further information through another ''unstructuredSS-Request'' Invoke operation.&lt;br /&gt;
&lt;br /&gt;
=== Network initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD requests are USSD requests started by the network towards a certain subscriber.&lt;br /&gt;
&lt;br /&gt;
Requests made by the network can be of one of two types:&lt;br /&gt;
* user interaction requests&lt;br /&gt;
* network notification requests.&lt;br /&gt;
&lt;br /&gt;
User interaction requests are USSD requests that the network makes in which it requires some type of information back from the mobile subscriber. These are started by the network through a TCAP BEGIN containing an ''unstructuredSS-Request'' Invoke. The answer from the mobile subscriber will be received in a TCAP CONTINUE containing an ''unstructuredSS-Request'' ResultLast. If the network still wants to request further information, it will repeat the process. Otherwise, it will send a TCAP END to close the TCAP dialog.&lt;br /&gt;
&lt;br /&gt;
Network notification requests are USSD requests in which the network only sends a notification to the user. This is achieved by sending a TCAP BEGIN message containing a ''unstructuredSS-Notify'' Invoke. The mobile subscriber side will only respond with a TCAP CONTINUE containing an empty ''unstructuredSS-Notify'' in order to signal that the notification was received. The network will close the TCAP dialog through TCAP END.&lt;br /&gt;
&lt;br /&gt;
=== MAP USSD parameters ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following list describe common parameters used across all MAP USSD operations:&lt;br /&gt;
* ''destinationReference'': this parameter will contain either an MSISDN or an IMSI. In the case of mobile originated USSD request, this will identify the user which made the request. In the case of network initiated requests, it will identify the mobile user to be contacted for this request.&lt;br /&gt;
* ''ussd-String'': for ''processUnstructuredSS-Request'' Invoke it contains the dialed USSD code, for the result it would probably contain a message from the network detailing the result of the request. For ''unstructuredSS-Request'' Invoke it will contain a message asking for the user to choose some option and for the result it will contain the option chosen by the user. In the case of ''unstructuredSS-Notify'', this parameter will only be present in the Invoke.&lt;br /&gt;
* ''ussd-DataCodingScheme'': this is a parameter which specifies in which way the ''ussd-String'' parameter is encoded and it is present whenever ''ussd-String'' is present. E.g., this parameter would indicate if the ''ussd-String'' is encoded using GSM7bit encoding or UCS2.&lt;br /&gt;
&lt;br /&gt;
== SMPP USSD description ==&lt;br /&gt;
&lt;br /&gt;
'''TO DO'''&lt;br /&gt;
&lt;br /&gt;
== System description ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== System design ===&lt;br /&gt;
&lt;br /&gt;
In order to provide the specified functionality, the system makes use of the following YATE components:&lt;br /&gt;
* the SS7 stack  present in YATE &lt;br /&gt;
* the camel_map module which decodes/encodes MAP messages coming from the SS7 network to/from internal YATE messages containing MAP operations in XML form. Together with the SS7 layer this provides MAP connectivity with HLR/gsmSCF.&lt;br /&gt;
* the ussd_map module which takes internal MAP messsages decoded by the camel_map moduled and translates them to internal USSD messages. This module acts as gsmSCF towards a HLR and as a HLR towards a gsmSCF.&lt;br /&gt;
* the SMPP stack present in YATE (ysmpp module) which is able to catch internal USSD messages and transmit them over SMPP. It also translates SMPP messages into internal USSD messages.&lt;br /&gt;
* requests for new USSD sessions will go through routing to decide who should handle the request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following sections detail the behaviour of the system in the different USSD scenarios.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mobile originated USSD handling ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A user initiated USSD session is handled according to the following schema:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# HLR sends a ''processUnstructuredSS-Request (Invoke)'' for code *100#. camel_map decodes the ''ussd-String'' into ''ussd-Text=*100#''.&lt;br /&gt;
# the ussd_map module (gsmSCF side) processes the request received from the HLR and emits a ''call.route'' message with ''called=*100#''.&lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with the ''callto'' parameter set to the value returned from routing. ussd_map dispatches the ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will send  it to the target specified in ''callto'' parameter after the module prefix ''ysmppserver/''.&lt;br /&gt;
# The ysmpp module receives and process the received ''submit_sm'' message.&lt;br /&gt;
# The ysmpp module will send a ''call.route'' message with the ''called=*100#''.&lt;br /&gt;
# The ysmpp module emits a ''ussd.execute'' message with ''callto=retvalue from call.route'' message.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ussd.execute message and if it is the target of the message, meaning that ''callto'' starts with ''ussd_map/''. From that message it will build a map.message that it will send to the gsmSCF as a ''processUnstructuresSS-Request (Invoke)'' MAP message.&amp;lt;br&amp;gt;'''NOTE:''' From here on, the gsmSCF could handle the request in one of  two distinguished cases: one where the gsmSCF requires interaction with the mobile subscriber and one where the gsmSCF just needs to respond to the user request. The following steps detail the former case.&amp;lt;br&amp;gt;&lt;br /&gt;
# gsmSCF sends an ''unstructuredSS-Request (Invoke)'' to  request further information.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits an ''ussd.update'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.update'' message and confirms to the SMPP client that the message sent in step 5 was processed.&lt;br /&gt;
# The SMPP client should confirm the processing of the SMPP message sent in step 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver_sm'' message to the SMPP client with the menu received in ''ussd.update'' message.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message with the received menu.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message from SMPP client and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.update'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time in which the mobile subscribers responds can be quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway when receiving the response from the mobile subscriber.&lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 13.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 21.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 9 and 24 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''processUnstructuredSS-Request (ResultLast)''  for the initial user request.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''processUnstructuredSS-Request (ResultLast)'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 22 or 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 21 or 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 31.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 29.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''processUnstructuredSS-Request (ResultLast)''.&lt;br /&gt;
&lt;br /&gt;
==== Network initiated USSD Request ====&lt;br /&gt;
&lt;br /&gt;
A network initiated USSD session is handled as described in the following figure:&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
# gsmSCF sends''unstructuredSS-Request (Invoke)'' to USSD Gateway (HLR part) to present a menu for MSISDN 0015559191.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits a ''call.route'' message with called=0015559191. &lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with ''callto'' set to the route returned in the return value of the ''call.route'' message and dispatches an ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will then send to the target specified in the ''callto'&amp;quot; parameter after the ''ysmppserver'' module prefix.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message towards SMPP server.&lt;br /&gt;
# The SMPP server processes the received ''submit_sm'' message and dispatches a ''call.route'' message.&lt;br /&gt;
# After successfully dispatching of ''call.route'' message the SMPP server will dispatch a ''call.execute'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.execute'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time to receiving a response from the user after gsmSCF has requested user interaction could be possibly quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway &lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 4.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 13.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 1 and 16 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''TCAP END'' in order to finish the USSD session.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''TCAP END'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 13.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 22.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 21.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''END''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fallback/Proxy mode ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following images detail scenarios where the USSD GW is instructed to do failover.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when an HLR sends ''processUnstructuredSS-Request (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:''' &lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message. &lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD session fallback.&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when a gsmSCF sends a &amp;quot;unstructuredSS-Request/unstructuredSS-Notify (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:'''&lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message.&lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The SMPP USSD gateway will also be bypassed when the ''ussd_map'' module is configured to do failover for all requests.&lt;br /&gt;
&lt;br /&gt;
Any type of SMPP error received either in the result for the ''ussd.execute'' or in the first message back from SMPP that does not have a mapping on MAP will lead to the ''ussd_map'' module doing failover. Errors that would generate a failover are errors like timeout, session ended abnormally, unknown errors, congestion errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once ''ussd_map'' decides that failover should be done, it will use the original received message  from the HLR (MO case)/gsmSCF (MT case) and it will only alter the called address to be the one of the gsmSCF/HLR set for the failover.. The calling address will remain the one received from HLR/gsmSCF, the idea being that for the first message we want to pretend that we are the original gsmSCF/HLR. When the receiving end of this message will want to respond, it will use the calling address from the message. Seeing that the ''ussd_map'' module set it to the original calller's address, further messages exchanged in that dialog between HLR and gsmSCF will not pass through USSD GW again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Internal message API ====&lt;br /&gt;
&lt;br /&gt;
This section documents the YATE messages used internally by the USSD GW.&lt;br /&gt;
&lt;br /&gt;
===== call.route =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used by ussd_map and ysmpp module to determine a destination where a new USSD session should be sent for further processing.&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module when receiving a request for a new USSD session on MAP for ''ussd_map'' or on SMPP for ''ysmpp''.&lt;br /&gt;
''ussd_map'' will only send this message if default routing is not enabled from configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
* module&lt;br /&gt;
** type: string &lt;br /&gt;
** Name of the module which requested routing&lt;br /&gt;
* application&lt;br /&gt;
** type: string&lt;br /&gt;
** Name of the ussd_map application which sent this routing request&lt;br /&gt;
* route_type&lt;br /&gt;
** type: keyword, value: ussd &lt;br /&gt;
** Specifies routing type, in this case it'll be USSD routing&lt;br /&gt;
* smpp_session_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
* smpp_system_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* if the message was processed, the return value of the message indicates the destination of the subsequent ''ussd.execute'' message.&lt;br /&gt;
* if the message was not processed or it returned with error (signaled by the return value being either &amp;quot;-&amp;quot; or &amp;quot;error&amp;quot;)&lt;br /&gt;
** ''ussd_map'' will do failover&lt;br /&gt;
** ysmpp will close the SMPP session, indicating an error either set by the call.route or either set to the default unknown error indication.&lt;br /&gt;
&lt;br /&gt;
===== ussd.execute =====&lt;br /&gt;
&lt;br /&gt;
This message is used to begin a new USSD session:&lt;br /&gt;
* on SMPP, if the message is directed to the ''ysmpp'' module&lt;br /&gt;
* on MAP if the message is directed to the ''ussd_map'' module&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module after successful routing stage. In case of the ''ussd_map'' module, this is message is sent if the routing stage did not indicate failover necessity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* callto:  &lt;br /&gt;
** type : string&lt;br /&gt;
** It specifies the target module to process the message. The string should start with  'ysmppserver/' for the  ''ysmpp&amp;quot; module and with ''ussd_map/'' for the ''ussd_map'' module.&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier assigned for this USSD session by the entity that processed this message.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error returned if the message was not processed.&lt;br /&gt;
&lt;br /&gt;
Processing of this message will return failure:&lt;br /&gt;
* if the message will not be processed&lt;br /&gt;
* if the 'id' parameter is missing.&lt;br /&gt;
* in case of processing error &lt;br /&gt;
* in case of congestion&lt;br /&gt;
&lt;br /&gt;
===== ussd.update =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used for transmitting USSD messages during a USSD session. This type of message will be used after the initial stage of creating the session through ''ussd.execute'' has succeeded.&lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP CONTINUE message &lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will be refused if it is received after a ''ussd.finalize'' message.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a values not allowed in the context of the USSD session (e.g., sending a ''processUnstructuredSS-Request inside a ''ussd.update'' message)&lt;br /&gt;
&lt;br /&gt;
===== ussd.finalize =====&lt;br /&gt;
&lt;br /&gt;
This message is used to signal the termination of the USSD session. Successful processing of this message means that the USSD session was terminated and is no longer available. &lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP END/ABORT message depending upon the parameters received. A message containing an error that does not map to a MAP error will generate a TCAP ABORT.&lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client, a message that will usually contain a last message indication.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by 'peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a value not allowed in the context of the USSD session&lt;br /&gt;
&lt;br /&gt;
===== Keyword values =====&lt;br /&gt;
&lt;br /&gt;
This section details acceptable values for parameters listed as having type ''keyword''.&lt;br /&gt;
&lt;br /&gt;
* '''hlr.nature/vlr.nature/gsmscf.nature/destination_reference.nature'''&lt;br /&gt;
** unknown&lt;br /&gt;
** international&lt;br /&gt;
** national&lt;br /&gt;
** network-specific&lt;br /&gt;
** subscriber&lt;br /&gt;
** abbreviated&lt;br /&gt;
&lt;br /&gt;
* '''hlr.plan/vlr.plan/gsmscf.plan/destination_reference.plan'''&lt;br /&gt;
** unknown&lt;br /&gt;
** isdn&lt;br /&gt;
** data&lt;br /&gt;
** telex&lt;br /&gt;
** land-mobile&lt;br /&gt;
** national&lt;br /&gt;
** private&lt;br /&gt;
&lt;br /&gt;
* '''operation_type'''&lt;br /&gt;
** pssd: mapping of MAP v1 USSD operation ''processUnstructuredSS-Data'' and of SMPP operation ''PSSD''. &lt;br /&gt;
** pssr: mapping of MAP v2 USSD operation ''processUnstructuredSS-Request'' and of SMPP operation ''PSSR''.&lt;br /&gt;
** ussr: mapping of MAP v2 USSD operation ''unstructuredSS-Request'' and of SMPP operation ''USSR&amp;quot;.&lt;br /&gt;
** ussn: mapping of MAP v2 USSD operation ''unstructuredSS-Notify'' and of SMPP operation ''USSN''.&lt;br /&gt;
&lt;br /&gt;
* '''error'''&lt;br /&gt;
** invalid_logic:  error reported when required processing does not follow USSD rules (e.g., MT request starting with ''processUnstructuredSS-Requests'')&lt;br /&gt;
** system_failure: error mapping for MAP error ''systemFailure''.&lt;br /&gt;
** data_missing: error mapping for  MAP error ''dataMissing''.&lt;br /&gt;
** unexpected_data: error mapping for MAP error ''unexpectedDataValue''.&lt;br /&gt;
** unknown_alphabet: error mapping for MAP error ''unknownAlphabet''.&lt;br /&gt;
** absent_subscriber: error mapping for MAP error ''absentSubscriber''.&lt;br /&gt;
** illegal_subscriber: error mapping for MAP error ''illegalSubscriber''.&lt;br /&gt;
** illegal_equipment: error mapping for MAP error ''illegalEquipment''.&lt;br /&gt;
** ussd_busy: error mapping for MAP error ''ussd-Busy''.&lt;br /&gt;
** call_barred: error mapping for MAP error ''callBarred''.&lt;br /&gt;
** network_failure: error signaling message transmission failure due to  connectivity issues either on the SS7 side or SMPP side.&lt;br /&gt;
** timeout_expired: error signaling a  request timeout occurrence.&lt;br /&gt;
** ussd_sess_end_abnormally: error signaling USSD session termination due to an unknown cause. Mapping for this error implies a TCAP Abort either being generated of received. &lt;br /&gt;
** unknown_error: error specified when there is no available mapping for an errror from SMPP to MAP or vice versa.&lt;br /&gt;
** throttling_error: error signaling that a message failed to be processed due to processing side being in congestion state.&lt;br /&gt;
** protocol_error: SMPP generic error. This error is put whenever there is a SMPP specific error that cannot be mapped into one of the other errors.&lt;br /&gt;
&lt;br /&gt;
* '''text.encoding'''&lt;br /&gt;
** gsm7bit / GSM7Bit: text was encoded/is to be encoded GSM 7 Bit&lt;br /&gt;
** ucs2 / UCS2: text was encoded/is to be encoded UCS 2&lt;br /&gt;
&lt;br /&gt;
* '''text.lang'''&lt;br /&gt;
**  two character string specifying a language according to ISO 639-1 or integer value if mapping is not provided.&lt;br /&gt;
&lt;br /&gt;
==== SMPP custom parameters ====&lt;br /&gt;
&lt;br /&gt;
* 0x1502 =&amp;gt; IMSI;&lt;br /&gt;
* 0x1503 =&amp;gt; VLR Type of Number;&lt;br /&gt;
* 0x1504 =&amp;gt; VLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1505 =&amp;gt; VLR address;&lt;br /&gt;
* 0x1506 =&amp;gt; GSM SCF Type of Number;&lt;br /&gt;
* 0x1507 =&amp;gt; GSM SCF Numbering Plan Indicator;&lt;br /&gt;
* 0x1508 =&amp;gt; GSM_SCF address;&lt;br /&gt;
* 0x1509 =&amp;gt; Destination Reference Type of Number;&lt;br /&gt;
* 0x150a =&amp;gt; Destination Reference Numbering Plan Indicator;&lt;br /&gt;
* 0x150b =&amp;gt; Destination Reference;&lt;br /&gt;
* 0x150c =&amp;gt; MSISDN&lt;br /&gt;
* 0x150d =&amp;gt; Alerting Pattern&lt;br /&gt;
* 0x1800 =&amp;gt; HLR Type of Number;&lt;br /&gt;
* 0x1801 =&amp;gt; HLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1802 =&amp;gt; HLR address.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
==== ysigchan module ====&lt;br /&gt;
&lt;br /&gt;
In order to have MAP connectivity, TCAP instances must be configured in ''ysigchan.conf'': &lt;br /&gt;
&lt;br /&gt;
 ; Example of a SS7 Transaction Capabilities Application Part&lt;br /&gt;
 ; This component is created when encountering a section of this kind&lt;br /&gt;
 ;[ss7tcap]&lt;br /&gt;
 ; type: keyword: identifies the component as a SS7 Transfer Capabilities Application Part&lt;br /&gt;
 ; type = ss7-tcap-ansi for ANSI TCAP&lt;br /&gt;
 ; type = ss7-tcap-itu for ITU TCAP&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; local_SSN: local SubSystem Number. Mandatory&lt;br /&gt;
 ;local_SSN=&lt;br /&gt;
 &lt;br /&gt;
 ; default_remote_SSN: remote SubSystem Number to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_SSN=&lt;br /&gt;
  &lt;br /&gt;
 ; default_remote_pointcode: remote Point Code to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_pointcode=&lt;br /&gt;
 &lt;br /&gt;
 ; pointcodetype: remote Point Code type. See above documentation for available types&lt;br /&gt;
 ;pointcodetype=&lt;br /&gt;
 &lt;br /&gt;
 ; sccp: Name of the SCCP component to create and be used by this TCAP&lt;br /&gt;
 ; A section with the name given here must exist in order to configure the SCCP level&lt;br /&gt;
 ;sccp=&lt;br /&gt;
 &lt;br /&gt;
 ; default_hopcounter: HopCounter provided to SCCP if the application does not provide one&lt;br /&gt;
 ; Values range 1-15, 0 or boolean false disables, boolean true sets to 15&lt;br /&gt;
 ; A non-zero value will force using XUDT or LUDT instead of UDT messages&lt;br /&gt;
 ;default_hopcounter=false&lt;br /&gt;
 &lt;br /&gt;
 ; transact_timeout: Time in seconds to timeout a TCAP transaction after no more activity was registered on it&lt;br /&gt;
 ; NOTE: Values below 15 seconds will be ignored and the timer will assume the default value.&lt;br /&gt;
 ; Defaults to 300 seconds&lt;br /&gt;
 ;transact_timeout=300&lt;br /&gt;
 &lt;br /&gt;
 ; max_timeout_checks: integer: Maximum number of timeout checks done on a transaction without starting the transaction&lt;br /&gt;
 ;  timer before forcefully starting the transaction timer&lt;br /&gt;
 ; Defaults to 10&lt;br /&gt;
 ;max_timeout_checks=10 &lt;br /&gt;
 &lt;br /&gt;
 ; timeout_check: Time interval in milliseconds to check for timeouts.&lt;br /&gt;
 ; Default to 100 ms&lt;br /&gt;
 ;timeout_check=100 &lt;br /&gt;
 &lt;br /&gt;
 ; floodevents: int: How many queued incoming TCAP messages trigger a congestion warning and the drop mechanism&lt;br /&gt;
 ;  for Unidirectional/Begin/QueryWithPermission/QueryWithoutPermission messages.&lt;br /&gt;
 ;  Exit from congestion will take place when there are less the floodevents/4 messages in the queue&lt;br /&gt;
 ; NOTE! Setting this parameter to 0 will disable the congestion warning and protection. Setting it to one will &lt;br /&gt;
 ;  be overriden and floodevents will be set to 2.&lt;br /&gt;
 ;floodevents=1000&lt;br /&gt;
 &lt;br /&gt;
 ;print-messages: Boolean to enable/disable printing of decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ;extended-debug: Boolean to enable/disable printing of the step-by-step decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload. print-messages must be true.&lt;br /&gt;
 ;extended-debug=false&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for keeping the list of current transactions&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
 [tcap-scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=147                                                                                                                                &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                     &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap-hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=7                                                                                                                                  &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Further configuration for SS7 connectivity is required (SCCP, MTP3, etc.).&lt;br /&gt;
&lt;br /&gt;
==== camel_map module ====&lt;br /&gt;
&lt;br /&gt;
Configuring of tracking IDs is done in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ;track_id: string: Shared engine variable name used to obtain a unique tracking ID for TCAP transactions&lt;br /&gt;
 ; If not set, the module will not set a tracking ID for the TCAP transaction&lt;br /&gt;
 ;track_id=&lt;br /&gt;
 &lt;br /&gt;
 ;track_id_base: string: Optional string with which to prefix the tracking ID&lt;br /&gt;
 ; This setting has no effect if track_id is not set&lt;br /&gt;
 ;track_id_base=&lt;br /&gt;
&lt;br /&gt;
In order to allow communication over MAP through SS7, sections configurating application should exist for each role of the ussd_map module (gsmSCF/HLR). A ''camel_map.conf'' section configuring an application looks like this:&lt;br /&gt;
 &lt;br /&gt;
 ;[local appName]&lt;br /&gt;
 ; This section configures a local application which transmits the XML messages as internal Yate messages&lt;br /&gt;
 &lt;br /&gt;
 ; translator: string: name of translator to be used by this application.&lt;br /&gt;
 ; Must be one one the [tcap ...] sections configured in the camel_map.conf file.&lt;br /&gt;
 ;translator=&lt;br /&gt;
  &lt;br /&gt;
 ; capabilities: string: List of capabilities separated by commas which this application supports&lt;br /&gt;
 ;capabilities=&lt;br /&gt;
  &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into a Yate message&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - string: pass the XML as a string&lt;br /&gt;
 ;  - object: pass the XML as an object&lt;br /&gt;
 ;  - both: pass the XML as a string and object&lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; enable: bool: Enable this application&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
&lt;br /&gt;
The translator setting refers to a section of the type defined below which configures atachement to a TCAP instance&lt;br /&gt;
&lt;br /&gt;
 ;[tcap map]&lt;br /&gt;
 ; This section configures a TCAP User MAP/CAMEL protocol translator&lt;br /&gt;
 &lt;br /&gt;
 ; enable: bool: Enable this translator&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of TCAP User &lt;br /&gt;
 ; Allowed values are MAP or CAMEL&lt;br /&gt;
 ;type=MAP&lt;br /&gt;
 &lt;br /&gt;
 ; host: IP address: Address on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ;host=127.0.0.1 &lt;br /&gt;
 &lt;br /&gt;
 ; port: integer: Port on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ; Note: setting port to 0 will disable the listener, so it will not accept TCP applications&lt;br /&gt;
 ;port=5555&lt;br /&gt;
 &lt;br /&gt;
 ; tcap: string: Name of TCAP to which this TCAP user should attach itself to for the SS7 communication&lt;br /&gt;
 ;tcap=&lt;br /&gt;
 &lt;br /&gt;
 ; add-encoding: bool: Always add encoding attribute to XML elements for decoded parameters&lt;br /&gt;
 ;add-encoding=default from [general]&lt;br /&gt;
 &lt;br /&gt;
 ; add-timestamp: bool: Add to XML timestamps used for estimating application latency&lt;br /&gt;
 ;add-timestamp=default from [general] &lt;br /&gt;
 &lt;br /&gt;
 ; print-messages: bool: Debug option to print TCAP and XML messages. This option is applicable on reload.&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-string: string: Specifies what the ussd-String parameter will contain as data&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - octets: ussd-String will contain the octets as they were received&lt;br /&gt;
 ;  - text: ussd-String will contain the GSM7Bit decoded text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-string=text&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-decode: string: Specifies what ussd-String parameters should be decoded into text&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - none: ussd-String parameters will never be decoded into text&lt;br /&gt;
 ;  - first: ussd-String in a TCAP Begin message will be decoded into text&lt;br /&gt;
 ;  - all: all ussd-String parameters will be decoded into text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-decode=all&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for mapping of TCAP transactions to applications&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For load sharing (especially in cases of high loads), you can configure multiple applications using the same translator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 applications acting as a gsmSCF, each one attached to the TCAP instance with gsmSCF SSN, and 2 applications as HLR, each one attached to the TCAP instance with HLR SSN 6:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 track_id=ussdgw&lt;br /&gt;
 track_id_base=ussdgw/&lt;br /&gt;
 &lt;br /&gt;
 [tcap scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-scf                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false                                                                                                                           &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-hlr                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false   &lt;br /&gt;
 &lt;br /&gt;
 [local ussdscf1]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all                                                                                                                            &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [local ussdscf2]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all               &lt;br /&gt;
 &lt;br /&gt;
 [local ussdhlr1]&lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all                                                                                                                            &lt;br /&gt;
 &lt;br /&gt;
 [local ussdhlr2]                                                                                                                             &lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all&lt;br /&gt;
&lt;br /&gt;
'''Note''' If SMPP is configured to expect decoded USSD texts (which is the default configuration), the ''ussd-decode'' configuration setting should be set to ''all''.&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
The module is configured through ''ussd_map.conf''. The configuration file sets timeout parameters and processing threads parameters in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList for keeping dialogs&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
 &lt;br /&gt;
 ; component_ttl: integer: Component time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; Defaults to 600000 (10 minutes)&lt;br /&gt;
 ;component_ttl=600000&lt;br /&gt;
 &lt;br /&gt;
 ; dialog_idle_ttl: integer: Dialog idle (nothing sent/received) time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; It can be set to 0 to keep it alive until the remote party terminates the dialog&lt;br /&gt;
 ; Defaults to 86400000 (1 day)&lt;br /&gt;
 ;dialog_idle_ttl=86400000&lt;br /&gt;
&lt;br /&gt;
 ; dialog_ended_ttl: integer: Ended dialog time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000.&lt;br /&gt;
 ; It can be set to 0 to remove the dialog after termination&lt;br /&gt;
 ; Defaults to 0&lt;br /&gt;
 ;dialog_ended_ttl=0&lt;br /&gt;
 &lt;br /&gt;
 ; dispatcher_maxthreads: integer: Maximum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ; NOTE: if the value is set to 0, the module will enqueue the messages into YATE's engine.&lt;br /&gt;
 ;dispatcher_maxthreads=0&lt;br /&gt;
&lt;br /&gt;
 ; dispatcher_minthreads: integer: Minimum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ;dispatcher_minthreads=1&lt;br /&gt;
&lt;br /&gt;
 ;dispatcher_priority: string: Default priority of message dispatch threads&lt;br /&gt;
 ;dispatcher_priority=normal&lt;br /&gt;
&lt;br /&gt;
 ; floodevents: integer: Threshold for signaling congestion when the number of messages waiting to be dispatched exceeds it.&lt;br /&gt;
 ; When entering congestion, all new MAP dialogs and USSD sessions will be refused.&lt;br /&gt;
 ; 0 disables the mechanism&lt;br /&gt;
 ;floodevents=0&lt;br /&gt;
&lt;br /&gt;
 ; congestion_exit_factor: double: Factor used to calculate the exit congestion threshold&lt;br /&gt;
 ; NOTE: if the factor results in a exit congestion threshold of 0 or greater than floodevents, &lt;br /&gt;
 ; the setting will be overriden and the exit congestion threshold will be set to 1.&lt;br /&gt;
 ;congestion_exit_factor=0.5&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Timeout settings should be correlated with timeout settings in TCAP and SMPP, each having its own timeout mechanism.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gateway applications which do the MAP &amp;lt;-&amp;gt; USSD translation are configured through section like the one below:&lt;br /&gt;
&lt;br /&gt;
 [appName]&lt;br /&gt;
 ; section name is the name of the camel_map application, it must correspond to a [local appName] section in camel_map &lt;br /&gt;
&lt;br /&gt;
 ; enable: boolean: Enable this application&lt;br /&gt;
 ; Defaults to yes&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of MAP &amp;lt;-&amp;gt; USSD translator: &lt;br /&gt;
 ;  - SCF means that is the part that receives new dialogs from the HLR (user initiated USSD)&lt;br /&gt;
 ;  - HLR is the part that receives new dialogs from gsmSCF (network initiated USSD)&lt;br /&gt;
 ; This setting cannot be changed on reload.&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into &lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; print_msg: boolean: Print sent/received messages to output&lt;br /&gt;
 ;print_msg=no&lt;br /&gt;
  &lt;br /&gt;
 ; print_xml: boolean: Print sent/received XML data to output&lt;br /&gt;
 ;print_xml=no&lt;br /&gt;
 &lt;br /&gt;
 ; local_addr. : prefix: Parameters prefixed with this set the local SCCP address of this application &lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; local_addr.CallingPartyAddress.route=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.ssn=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.pointcode=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.nature=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.plan=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.translation=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.encoding= &lt;br /&gt;
 &lt;br /&gt;
 ; default_routing: bool : Do routing to default address for all messages&lt;br /&gt;
 ; default_routing=no&lt;br /&gt;
 &lt;br /&gt;
 ; default_addr. : prefix: parameters prefixed with this will be used as the default SCCP called address&lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; default_addr.application=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.route=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.ssn=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.pointcode=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.nature=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.translation=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.encoding=&lt;br /&gt;
 &lt;br /&gt;
 ; hlr_ssn: integer: The SSN expected in the calling address from a HLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;hlr_ssn=6&lt;br /&gt;
 &lt;br /&gt;
 ; vlr_ssn: integer: The SSN expected in the calling address from a VLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;vlr_ssn=7&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each section should have its own equivalent in ''camel_map.conf''.&lt;br /&gt;
In the USSD GW scenario, at least tho applications are needed, one acting as SCF, one as HLR. For load sharing multiple gsmSCF and HLR applications can be configured (see the configuration example below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 gsmSCF applications and 2 HLR applications, each one corresponding with a application section in the ''camel_map.conf'' example:&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 component_ttl=600000                                                                                                                         &lt;br /&gt;
 dialog_ended_ttl=0                                                                                                                           &lt;br /&gt;
 dispatcher_maxthreads=10                                                                                                                     &lt;br /&gt;
 dispatcher_minthreads=5                                                                                                                      &lt;br /&gt;
 ;dispatcher_priority=normal                                                                                                                  &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [ussdscf1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
&lt;br /&gt;
 [ussdscf2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
 &lt;br /&gt;
 [ussdhlr1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                         &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd                                                                                              &lt;br /&gt;
                                                   &lt;br /&gt;
 [ussdhlr2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
TODO - configuration explanations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''NOTE''' The module encodes text to ASCII for default encoding (configuration parameter ''default_encoding_type'').&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example''''&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
 server=smpp-server                                                                                                                           &lt;br /&gt;
 track_id=ussdgw                                                                                                                              &lt;br /&gt;
 track_id_base=ussdgw/                                                                                                                        &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [smpp-server]                                                                                                                                &lt;br /&gt;
 enable=true                                                                                                                                  &lt;br /&gt;
 session_responseinterval=600000                                                                                                              &lt;br /&gt;
 sessionset_process_max=1                                                                                                                     &lt;br /&gt;
 codec_warndefaults=false                                                                                                                     &lt;br /&gt;
 print-messages=no                                                                                                                            &lt;br /&gt;
                                                                                                                                            &lt;br /&gt;
 [listenerserver server]                                                                                                                      &lt;br /&gt;
 ;enable=yes                                                                                                                                  &lt;br /&gt;
 addr=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=12345&lt;br /&gt;
 ; use GSM 7 Bit for default SMPP encoding&lt;br /&gt;
 default_encoding_type=gsm7bit&lt;br /&gt;
&lt;br /&gt;
=== Monitoring ===&lt;br /&gt;
&lt;br /&gt;
This section details comands through which the state of the USSD GW can be monitored.&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
* '''Congestion state monitoring'''&lt;br /&gt;
&lt;br /&gt;
The ''ussd_map'' module will generate an alarm when entering/exiting a congestion state. If SNMP support is enabled, this will generate a trap on SNMP.&lt;br /&gt;
The congestion status is also reported in the ''state'' entry in the result of the module status command.&lt;br /&gt;
&lt;br /&gt;
* '''Module status'''&lt;br /&gt;
&lt;br /&gt;
The module reports its status through the following command in the YATE telnet console:&lt;br /&gt;
&lt;br /&gt;
 status ussd_map&lt;br /&gt;
&lt;br /&gt;
The command will print the following information:&lt;br /&gt;
&lt;br /&gt;
 workers=count_of_dispatching_threads,messages=count_msg,dialogs=count_of_dialogs,state=normal,count=count_of_applications;format=Type | CurrentDlgs| MAPCreated | UssdCreated |DefaultRouted | MAPSent | MapRecv | USSDSent | USSDRecv | MAPAbort | USSDAbort | BuiltAbort | MAPTimeouts | USSDTimeouts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
* workers: current number of used dispatching threads from the maximum configured pool (e.g., 3/10 means 3 threads are used of a pool of 10)&lt;br /&gt;
* messages: count of messages waiting on the dispatching queue of the engine&lt;br /&gt;
* dialogs: total number of USSD sessions currently handled by all applications&lt;br /&gt;
* state of the engine: normal/congestion&lt;br /&gt;
* count: number of applications acting either as gsmSCF, either as HLR&lt;br /&gt;
* format: name of the application for which the following data is reported:&lt;br /&gt;
** Type: role of the application: SCF (communicates with real HLR), HLR (communicates with real gsmSCF)&lt;br /&gt;
** CurrentDlgs: number of current MAP dialogs handled by this application&lt;br /&gt;
** MAPCreated: number of sessions (dialogs) started by the MAP side&lt;br /&gt;
** UssdCreated: number of sessions (dialogs) started by the SMPP side&lt;br /&gt;
** DefaultRouted: number of dialogs for which failover took place&lt;br /&gt;
** MAPSent: number of MAP messages sent to gsmSCF/HLR. It doesn't count the ones sent via failover routing.&lt;br /&gt;
** MAPRecv: number of MAP messages received from gsmSCF/HLR&lt;br /&gt;
** USSDSent: number of sent ussd.execute/ussd.update/ussd.finalize messages towards the SMPP side.&lt;br /&gt;
** USSDRecv: number of received ussd.execute/ussd.update/usdd.notify messages from SMPP side.&lt;br /&gt;
** MAPAbort: number of dialog aborts generated by MAP side&lt;br /&gt;
** USSDAbort: number of dialog aborts generated by USSD side&lt;br /&gt;
** BuiltAbort: number of dialog aborts generated by the ussd_map module (e.g., not having a ussd.update message processed by anyone will cause ussd_map to generate session abort)&lt;br /&gt;
** MAPTimeouts: number of dialog timeouts generated by MAP side&lt;br /&gt;
** USSDTimeouts: number of timeouts reported by USSD side&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Module control commands'''&lt;br /&gt;
&lt;br /&gt;
The module offers the following control commands through the telnet console:&lt;br /&gt;
* ''control ussd_map appName print-msg [yes|no|verbose]'' : enable printing of received/sent map./ussd./messages.&lt;br /&gt;
* ''control ussd_map appName print-xml [yes|no|verbose]'' : enable printing of received/sent XMLs.&lt;br /&gt;
* ''control ussd_map appName export-xml-as [string|object|both]'' : change the way XML is set in the internal messages&lt;br /&gt;
* ''control ussd_map start_stats'' : begin gathering data for statistics&lt;br /&gt;
* ''control ussd_map stop_stats'' : stop gathering data for statistics&lt;br /&gt;
* ''control usdd_map stats'' : print statistic data per engine and each application in part. Data contains number of MAP messages handled per second, number of USSD messages handled per second, maximum number of current dialogs, number of timeouts and number of aborts.&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
The ysmpp module provides the following options for status command:&lt;br /&gt;
&lt;br /&gt;
'NOTE' the module_name can take the following values: smppserver or smppclient.&lt;br /&gt;
&lt;br /&gt;
* status module_name listeners&lt;br /&gt;
Prints the module listeners status in format: Address|Status|Reason.&lt;br /&gt;
&lt;br /&gt;
* status module_name sessions&lt;br /&gt;
Prints the status of the sessions in format: Id|State|BindMode|SystemId|IpAddress:Port|Congested|Incoming Queue|Outgoing Queue;&lt;br /&gt;
&lt;br /&gt;
** Id: The ID of the SMPP session. Can be used for routing.&lt;br /&gt;
** State: The state of the SMPP session.&lt;br /&gt;
** BindMode: The mode in which the session was bound. (Send/Recv/SendRecv)&lt;br /&gt;
** SystemId: The id with which the session has been authenticated. Can be used in routing.&lt;br /&gt;
** IpAddress:Port: The Ip Address and port of the remote end of the session.&lt;br /&gt;
** Congested: True if this session is in congestion state.&lt;br /&gt;
** Incoming Queue: The number of messages not processed in the incoming queue.&lt;br /&gt;
** Outgoing Queue: The number of messages not processed in the outgoing queue.&lt;br /&gt;
&lt;br /&gt;
*status module_name ussd overview&lt;br /&gt;
Prints the stats of the USSD sessions in format: Total|Active|Average Duration|Total Sent|Total Received|AverageTrafficPerSecond|EndedWithErrors|CongestionRefused&lt;br /&gt;
&lt;br /&gt;
** Total: the number of USSD sessions created since the starting of the program.&lt;br /&gt;
** Active: the number of USSD sessions currently active.&lt;br /&gt;
** Average Duration: average duration of a ussd session.&lt;br /&gt;
** Total Sent: total number of SMPP messages sent for USSD sessions.&lt;br /&gt;
** Total Received: total number of SMPP messages received for USSD sessions.&lt;br /&gt;
** AverageTrafficPerSecond: average traffic per second for USSD sessions.&lt;br /&gt;
** EndedWithErrors: the number of USSD sessions that ended with error.&lt;br /&gt;
** CongestionRefused: the number of USSD sessions refused because the server was overloaded.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* Mobile Application Part (MAP) specification: ETSI TE 129 002&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/USSD_GW</id>
		<title>USSD GW</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/USSD_GW"/>
				<updated>2014-02-06T16:14:12Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: /* Keyword values */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an implementation an USSD gateway acting as a MAP Service Control Function (gsmSCF) and as a HLR at the same time. When communicating with a HLR or VLR, the YATE USSD GW acts as a gsmSCF. When communicating with a gsmSCF, the YATE USSDGW acts as a HLR.&lt;br /&gt;
The functionality of the USSD GW allows:&lt;br /&gt;
* redirecting of USSD requests arriving either from user side or gsmSCF side to a SMPP client where they can be altered.&lt;br /&gt;
* acting as a proxy for requests that need not be handled by SMPP clients or when the SMPP handling fails&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MAP USSD description ==&lt;br /&gt;
&lt;br /&gt;
In versions 2 and 3 of the GSM MAP protocol there are 3 operations used for USSD operations:&lt;br /&gt;
* processUnstructedSS-Request&lt;br /&gt;
* unstructuredSS-Request&lt;br /&gt;
* unstrusturedSS-Notify&lt;br /&gt;
&lt;br /&gt;
The are 2 scenarios for USSD operations:&lt;br /&gt;
* mobile initiated USSD requests&lt;br /&gt;
* network initiated USSD requests&lt;br /&gt;
&lt;br /&gt;
A TCAP dialog used by USSD is always terminated by the network side.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mobile initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobile initiated USSD requests are USSD requests started by the mobile subscriber.  &lt;br /&gt;
&lt;br /&gt;
A USSD request is started when receiving a TCAP BEGIN message containing the ''processUnstructedSS-Request'' Invoke operation. The request can be handled by the VLR, HLR or a gsmSCF. If the VLR does not handle the request, it will transmit it to the HLR. The HLR can either handle it itself or it can transmit it to a gsmSCF for handling.&lt;br /&gt;
&lt;br /&gt;
At this point, the network can either send a response to the request immediately or request additional information. In the first case, the handler of the request will send a TCAP End with ''processUnstructuredSS-Request'' ResultLast containing the result for the request. &lt;br /&gt;
In the latter case, the network will send a TCAP CONTINUE with ''unstructuredSS-Request'' Invoke operation. The response of the mobile subscriber to this request will be passed to the network in a TCAP CONTINUE with ''unstructuredSS-Request'' ResultLast component. At this point, if the network decides that it has enough information for providing the response to the user, it will send a TCAP END with ''processUnstructuredSS-Request'' ResultLast. Otherwise, it can request further information through another ''unstructuredSS-Request'' Invoke operation.&lt;br /&gt;
&lt;br /&gt;
=== Network initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD requests are USSD requests started by the network towards a certain subscriber.&lt;br /&gt;
&lt;br /&gt;
Requests made by the network can be of one of two types:&lt;br /&gt;
* user interaction requests&lt;br /&gt;
* network notification requests.&lt;br /&gt;
&lt;br /&gt;
User interaction requests are USSD requests that the network makes in which it requires some type of information back from the mobile subscriber. These are started by the network through a TCAP BEGIN containing an ''unstructuredSS-Request'' Invoke. The answer from the mobile subscriber will be received in a TCAP CONTINUE containing an ''unstructuredSS-Request'' ResultLast. If the network still wants to request further information, it will repeat the process. Otherwise, it will send a TCAP END to close the TCAP dialog.&lt;br /&gt;
&lt;br /&gt;
Network notification requests are USSD requests in which the network only sends a notification to the user. This is achieved by sending a TCAP BEGIN message containing a ''unstructuredSS-Notify'' Invoke. The mobile subscriber side will only respond with a TCAP CONTINUE containing an empty ''unstructuredSS-Notify'' in order to signal that the notification was received. The network will close the TCAP dialog through TCAP END.&lt;br /&gt;
&lt;br /&gt;
=== MAP USSD parameters ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following list describe common parameters used across all MAP USSD operations:&lt;br /&gt;
* ''destinationReference'': this parameter will contain either an MSISDN or an IMSI. In the case of mobile originated USSD request, this will identify the user which made the request. In the case of network initiated requests, it will identify the mobile user to be contacted for this request.&lt;br /&gt;
* ''ussd-String'': for ''processUnstructuredSS-Request'' Invoke it contains the dialed USSD code, for the result it would probably contain a message from the network detailing the result of the request. For ''unstructuredSS-Request'' Invoke it will contain a message asking for the user to choose some option and for the result it will contain the option chosen by the user. In the case of ''unstructuredSS-Notify'', this parameter will only be present in the Invoke.&lt;br /&gt;
* ''ussd-DataCodingScheme'': this is a parameter which specifies in which way the ''ussd-String'' parameter is encoded and it is present whenever ''ussd-String'' is present. E.g., this parameter would indicate if the ''ussd-String'' is encoded using GSM7bit encoding or UCS2.&lt;br /&gt;
&lt;br /&gt;
== SMPP USSD description ==&lt;br /&gt;
&lt;br /&gt;
'''TO DO'''&lt;br /&gt;
&lt;br /&gt;
== System description ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== System design ===&lt;br /&gt;
&lt;br /&gt;
In order to provide the specified functionality, the system makes use of the following YATE components:&lt;br /&gt;
* the SS7 stack  present in YATE &lt;br /&gt;
* the camel_map module which decodes/encodes MAP messages coming from the SS7 network to/from internal YATE messages containing MAP operations in XML form. Together with the SS7 layer this provides MAP connectivity with HLR/gsmSCF.&lt;br /&gt;
* the ussd_map module which takes internal MAP messsages decoded by the camel_map moduled and translates them to internal USSD messages. This module acts as gsmSCF towards a HLR and as a HLR towards a gsmSCF.&lt;br /&gt;
* the SMPP stack present in YATE (ysmpp module) which is able to catch internal USSD messages and transmit them over SMPP. It also translates SMPP messages into internal USSD messages.&lt;br /&gt;
* requests for new USSD sessions will go through routing to decide who should handle the request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following sections detail the behaviour of the system in the different USSD scenarios.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mobile originated USSD handling ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A user initiated USSD session is handled according to the following schema:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# HLR sends a ''processUnstructuredSS-Request (Invoke)'' for code *100#. camel_map decodes the ''ussd-String'' into ''ussd-Text=*100#''.&lt;br /&gt;
# the ussd_map module (gsmSCF side) processes the request received from the HLR and emits a ''call.route'' message with ''called=*100#''.&lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with the ''callto'' parameter set to the value returned from routing. ussd_map dispatches the ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will send  it to the target specified in ''callto'' parameter after the module prefix ''ysmppserver/''.&lt;br /&gt;
# The ysmpp module receives and process the received ''submit_sm'' message.&lt;br /&gt;
# The ysmpp module will send a ''call.route'' message with the ''called=*100#''.&lt;br /&gt;
# The ysmpp module emits a ''ussd.execute'' message with ''callto=retvalue from call.route'' message.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ussd.execute message and if it is the target of the message, meaning that ''callto'' starts with ''ussd_map/''. From that message it will build a map.message that it will send to the gsmSCF as a ''processUnstructuresSS-Request (Invoke)'' MAP message.&amp;lt;br&amp;gt;'''NOTE:''' From here on, the gsmSCF could handle the request in one of  two distinguished cases: one where the gsmSCF requires interaction with the mobile subscriber and one where the gsmSCF just needs to respond to the user request. The following steps detail the former case.&amp;lt;br&amp;gt;&lt;br /&gt;
# gsmSCF sends an ''unstructuredSS-Request (Invoke)'' to  request further information.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits an ''ussd.update'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.update'' message and confirms to the SMPP client that the message sent in step 5 was processed.&lt;br /&gt;
# The SMPP client should confirm the processing of the SMPP message sent in step 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver_sm'' message to the SMPP client with the menu received in ''ussd.update'' message.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message with the received menu.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message from SMPP client and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.update'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time in which the mobile subscribers responds can be quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway when receiving the response from the mobile subscriber.&lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 13.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 21.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 9 and 24 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''processUnstructuredSS-Request (ResultLast)''  for the initial user request.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''processUnstructuredSS-Request (ResultLast)'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 22 or 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 21 or 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 31.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 29.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''processUnstructuredSS-Request (ResultLast)''.&lt;br /&gt;
&lt;br /&gt;
==== Network initiated USSD Request ====&lt;br /&gt;
&lt;br /&gt;
A network initiated USSD session is handled as described in the following figure:&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
# gsmSCF sends''unstructuredSS-Request (Invoke)'' to USSD Gateway (HLR part) to present a menu for MSISDN 0015559191.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits a ''call.route'' message with called=0015559191. &lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with ''callto'' set to the route returned in the return value of the ''call.route'' message and dispatches an ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will then send to the target specified in the ''callto'&amp;quot; parameter after the ''ysmppserver'' module prefix.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message towards SMPP server.&lt;br /&gt;
# The SMPP server processes the received ''submit_sm'' message and dispatches a ''call.route'' message.&lt;br /&gt;
# After successfully dispatching of ''call.route'' message the SMPP server will dispatch a ''call.execute'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.execute'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time to receiving a response from the user after gsmSCF has requested user interaction could be possibly quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway &lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 4.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 13.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 1 and 16 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''TCAP END'' in order to finish the USSD session.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''TCAP END'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 13.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 22.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 21.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''END''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fallback/Proxy mode ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following images detail scenarios where the USSD GW is instructed to do failover.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when an HLR sends ''processUnstructuredSS-Request (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:''' &lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message. &lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD session fallback.&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when a gsmSCF sends a &amp;quot;unstructuredSS-Request/unstructuredSS-Notify (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:'''&lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message.&lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The SMPP USSD gateway will also be bypassed when the ''ussd_map'' module is configured to do failover for all requests.&lt;br /&gt;
&lt;br /&gt;
Any type of SMPP error received either in the result for the ''ussd.execute'' or in the first message back from SMPP that does not have a mapping on MAP will lead to the ''ussd_map'' module doing failover. Errors that would generate a failover are errors like timeout, session ended abnormally, unknown errors, congestion errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once ''ussd_map'' decides that failover should be done, it will use the original received message  from the HLR (MO case)/gsmSCF (MT case) and it will only alter the called address to be the one of the gsmSCF/HLR set for the failover.. The calling address will remain the one received from HLR/gsmSCF, the idea being that for the first message we want to pretend that we are the original gsmSCF/HLR. When the receiving end of this message will want to respond, it will use the calling address from the message. Seeing that the ''ussd_map'' module set it to the original calller's address, further messages exchanged in that dialog between HLR and gsmSCF will not pass through USSD GW again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Internal message API ====&lt;br /&gt;
&lt;br /&gt;
This section documents the YATE messages used internally by the USSD GW.&lt;br /&gt;
&lt;br /&gt;
===== call.route =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used by ussd_map and ysmpp module to determine a destination where a new USSD session should be sent for further processing.&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module when receiving a request for a new USSD session on MAP for ''ussd_map'' or on SMPP for ''ysmpp''.&lt;br /&gt;
''ussd_map'' will only send this message if default routing is not enabled from configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
* module&lt;br /&gt;
** type: string &lt;br /&gt;
** Name of the module which requested routing&lt;br /&gt;
* application&lt;br /&gt;
** type: string&lt;br /&gt;
** Name of the ussd_map application which sent this routing request&lt;br /&gt;
* route_type&lt;br /&gt;
** type: keyword, value: ussd &lt;br /&gt;
** Specifies routing type, in this case it'll be USSD routing&lt;br /&gt;
* smpp_session_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
* smpp_system_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* if the message was processed, the return value of the message indicates the destination of the subsequent ''ussd.execute'' message.&lt;br /&gt;
* if the message was not processed or it returned with error (signaled by the return value being either &amp;quot;-&amp;quot; or &amp;quot;error&amp;quot;)&lt;br /&gt;
** ''ussd_map'' will do failover&lt;br /&gt;
** ysmpp will close the SMPP session, indicating an error either set by the call.route or either set to the default unknown error indication.&lt;br /&gt;
&lt;br /&gt;
===== ussd.execute =====&lt;br /&gt;
&lt;br /&gt;
This message is used to begin a new USSD session:&lt;br /&gt;
* on SMPP, if the message is directed to the ''ysmpp'' module&lt;br /&gt;
* on MAP if the message is directed to the ''ussd_map'' module&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module after successful routing stage. In case of the ''ussd_map'' module, this is message is sent if the routing stage did not indicate failover necessity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* callto:  &lt;br /&gt;
** type : string&lt;br /&gt;
** It specifies the target module to process the message. The string should start with  'ysmppserver/' for the  ''ysmpp&amp;quot; module and with ''ussd_map/'' for the ''ussd_map'' module.&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier assigned for this USSD session by the entity that processed this message.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error returned if the message was not processed.&lt;br /&gt;
&lt;br /&gt;
Processing of this message will return failure:&lt;br /&gt;
* if the message will not be processed&lt;br /&gt;
* if the 'id' parameter is missing.&lt;br /&gt;
* in case of processing error &lt;br /&gt;
* in case of congestion&lt;br /&gt;
&lt;br /&gt;
===== ussd.update =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used for transmitting USSD messages during a USSD session. This type of message will be used after the initial stage of creating the session through ''ussd.execute'' has succeeded.&lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP CONTINUE message &lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will be refused if it is received after a ''ussd.finalize'' message.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a values not allowed in the context of the USSD session (e.g., sending a ''processUnstructuredSS-Request inside a ''ussd.update'' message)&lt;br /&gt;
&lt;br /&gt;
===== ussd.finalize =====&lt;br /&gt;
&lt;br /&gt;
This message is used to signal the termination of the USSD session. Successful processing of this message means that the USSD session was terminated and is no longer available. &lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP END/ABORT message depending upon the parameters received. A message containing an error that does not map to a MAP error will generate a TCAP ABORT.&lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client, a message that will usually contain a last message indication.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by 'peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a value not allowed in the context of the USSD session&lt;br /&gt;
&lt;br /&gt;
===== Keyword values =====&lt;br /&gt;
&lt;br /&gt;
This section details acceptable values for parameters listed as having type ''keyword''.&lt;br /&gt;
&lt;br /&gt;
* '''hlr.nature/vlr.nature/gsmscf.nature/destination_reference.nature'''&lt;br /&gt;
** unknown&lt;br /&gt;
** international&lt;br /&gt;
** national&lt;br /&gt;
** network-specific&lt;br /&gt;
** subscriber&lt;br /&gt;
** abbreviated&lt;br /&gt;
&lt;br /&gt;
* '''hlr.plan/vlr.plan/gsmscf.plan/destination_reference.plan'''&lt;br /&gt;
** unknown&lt;br /&gt;
** isdn&lt;br /&gt;
** data&lt;br /&gt;
** telex&lt;br /&gt;
** land-mobile&lt;br /&gt;
** national&lt;br /&gt;
** private&lt;br /&gt;
&lt;br /&gt;
* '''operation_type'''&lt;br /&gt;
** pssd: mapping of MAP v1 USSD operation ''processUnstructuredSS-Data'' and of SMPP operation ''PSSD''. &lt;br /&gt;
** pssr: mapping of MAP v2 USSD operation ''processUnstructuredSS-Request'' and of SMPP operation ''PSSR''.&lt;br /&gt;
** ussr: mapping of MAP v2 USSD operation ''unstructuredSS-Request'' and of SMPP operation ''USSR&amp;quot;.&lt;br /&gt;
** ussn: mapping of MAP v2 USSD operation ''unstructuredSS-Notify'' and of SMPP operation ''USSN''.&lt;br /&gt;
&lt;br /&gt;
* '''error'''&lt;br /&gt;
** invalid_logic:  error reported when required processing does not follow USSD rules (e.g., MT request starting with ''processUnstructuredSS-Requests'')&lt;br /&gt;
** system_failure: error mapping for MAP error ''systemFailure''.&lt;br /&gt;
** data_missing: error mapping for  MAP error ''dataMissing''.&lt;br /&gt;
** unexpected_data: error mapping for MAP error ''unexpectedDataValue''.&lt;br /&gt;
** unknown_alphabet: error mapping for MAP error ''unknownAlphabet''.&lt;br /&gt;
** absent_subscriber: error mapping for MAP error ''absentSubscriber''.&lt;br /&gt;
** illegal_subscriber: error mapping for MAP error ''illegalSubscriber''.&lt;br /&gt;
** illegal_equipment: error mapping for MAP error ''illegalEquipment''.&lt;br /&gt;
** ussd_busy: error mapping for MAP error ''ussd-Busy''.&lt;br /&gt;
** call_barred: error mapping for MAP error ''callBarred''.&lt;br /&gt;
** network_failure: error signaling message transmission failure due to  connectivity issues either on the SS7 side or SMPP side.&lt;br /&gt;
** timeout_expired: error signaling a  request timeout occurrence.&lt;br /&gt;
** ussd_sess_end_abnormally: error signaling USSD session termination due to an unknown cause. Mapping for this error implies a TCAP Abort either being generated of received. &lt;br /&gt;
** unknown_error: error specified when there is no available mapping for an errror from SMPP to MAP or vice versa.&lt;br /&gt;
** throttling_error: error signaling that a message failed to be processed due to processing side being in congestion state.&lt;br /&gt;
** protocol_error: SMPP generic error. This error is put whenever there is a SMPP specific error that cannot be mapped into one of the other errors.&lt;br /&gt;
&lt;br /&gt;
* '''text.encoding'''&lt;br /&gt;
** gsm7bit / GSM7Bit: text was encoded/is to be encoded GSM 7 Bit&lt;br /&gt;
** ucs2 / UCS2: text was encoded/is to be encoded UCS 2&lt;br /&gt;
&lt;br /&gt;
* '''text.lang'''&lt;br /&gt;
**  two character string specifying a language according to ISO 639-1 or integer value if mapping is not provided.&lt;br /&gt;
&lt;br /&gt;
==== SMPP custom parameters ====&lt;br /&gt;
&lt;br /&gt;
* 0x1502 =&amp;gt; IMSI;&lt;br /&gt;
* 0x1503 =&amp;gt; VLR Type of Number;&lt;br /&gt;
* 0x1504 =&amp;gt; VLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1505 =&amp;gt; VLR address;&lt;br /&gt;
* 0x1506 =&amp;gt; GSM SCF Type of Number;&lt;br /&gt;
* 0x1507 =&amp;gt; GSM SCF Numbering Plan Indicator;&lt;br /&gt;
* 0x1508 =&amp;gt; GSM_SCF address;&lt;br /&gt;
* 0x1509 =&amp;gt; Destination Reference Type of Number;&lt;br /&gt;
* 0x150a =&amp;gt; Destination Reference Numbering Plan Indicator;&lt;br /&gt;
* 0x150b =&amp;gt; Destination Reference;&lt;br /&gt;
* 0x150c =&amp;gt; MSISDN&lt;br /&gt;
* 0x150d =&amp;gt; Alerting Pattern&lt;br /&gt;
* 0x1800 =&amp;gt; HLR Type of Number;&lt;br /&gt;
* 0x1801 =&amp;gt; HLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1802 =&amp;gt; HLR address.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
==== ysigchan module ====&lt;br /&gt;
&lt;br /&gt;
In order to have MAP connectivity, TCAP instances must be configured in ''ysigchan.conf'': &lt;br /&gt;
&lt;br /&gt;
 ; Example of a SS7 Transaction Capabilities Application Part&lt;br /&gt;
 ; This component is created when encountering a section of this kind&lt;br /&gt;
 ;[ss7tcap]&lt;br /&gt;
 ; type: keyword: identifies the component as a SS7 Transfer Capabilities Application Part&lt;br /&gt;
 ; type = ss7-tcap-ansi for ANSI TCAP&lt;br /&gt;
 ; type = ss7-tcap-itu for ITU TCAP&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; local_SSN: local SubSystem Number. Mandatory&lt;br /&gt;
 ;local_SSN=&lt;br /&gt;
 &lt;br /&gt;
 ; default_remote_SSN: remote SubSystem Number to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_SSN=&lt;br /&gt;
  &lt;br /&gt;
 ; default_remote_pointcode: remote Point Code to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_pointcode=&lt;br /&gt;
 &lt;br /&gt;
 ; pointcodetype: remote Point Code type. See above documentation for available types&lt;br /&gt;
 ;pointcodetype=&lt;br /&gt;
 &lt;br /&gt;
 ; sccp: Name of the SCCP component to create and be used by this TCAP&lt;br /&gt;
 ; A section with the name given here must exist in order to configure the SCCP level&lt;br /&gt;
 ;sccp=&lt;br /&gt;
 &lt;br /&gt;
 ; default_hopcounter: HopCounter provided to SCCP if the application does not provide one&lt;br /&gt;
 ; Values range 1-15, 0 or boolean false disables, boolean true sets to 15&lt;br /&gt;
 ; A non-zero value will force using XUDT or LUDT instead of UDT messages&lt;br /&gt;
 ;default_hopcounter=false&lt;br /&gt;
 &lt;br /&gt;
 ; transact_timeout: Time in seconds to timeout a TCAP transaction after no more activity was registered on it&lt;br /&gt;
 ; NOTE: Values below 15 seconds will be ignored and the timer will assume the default value.&lt;br /&gt;
 ; Defaults to 300 seconds&lt;br /&gt;
 ;transact_timeout=300&lt;br /&gt;
 &lt;br /&gt;
 ; max_timeout_checks: integer: Maximum number of timeout checks done on a transaction without starting the transaction&lt;br /&gt;
 ;  timer before forcefully starting the transaction timer&lt;br /&gt;
 ; Defaults to 10&lt;br /&gt;
 ;max_timeout_checks=10 &lt;br /&gt;
 &lt;br /&gt;
 ; timeout_check: Time interval in milliseconds to check for timeouts.&lt;br /&gt;
 ; Default to 100 ms&lt;br /&gt;
 ;timeout_check=100 &lt;br /&gt;
 &lt;br /&gt;
 ; floodevents: int: How many queued incoming TCAP messages trigger a congestion warning and the drop mechanism&lt;br /&gt;
 ;  for Unidirectional/Begin/QueryWithPermission/QueryWithoutPermission messages.&lt;br /&gt;
 ;  Exit from congestion will take place when there are less the floodevents/4 messages in the queue&lt;br /&gt;
 ; NOTE! Setting this parameter to 0 will disable the congestion warning and protection. Setting it to one will &lt;br /&gt;
 ;  be overriden and floodevents will be set to 2.&lt;br /&gt;
 ;floodevents=1000&lt;br /&gt;
 &lt;br /&gt;
 ;print-messages: Boolean to enable/disable printing of decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ;extended-debug: Boolean to enable/disable printing of the step-by-step decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload. print-messages must be true.&lt;br /&gt;
 ;extended-debug=false&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for keeping the list of current transactions&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
 [tcap-scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=147                                                                                                                                &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                     &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap-hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=7                                                                                                                                  &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Further configuration for SS7 connectivity is required (SCCP, MTP3, etc.).&lt;br /&gt;
&lt;br /&gt;
==== camel_map module ====&lt;br /&gt;
&lt;br /&gt;
Configuring of tracking IDs is done in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ;track_id: string: Shared engine variable name used to obtain a unique tracking ID for TCAP transactions&lt;br /&gt;
 ; If not set, the module will not set a tracking ID for the TCAP transaction&lt;br /&gt;
 ;track_id=&lt;br /&gt;
 &lt;br /&gt;
 ;track_id_base: string: Optional string with which to prefix the tracking ID&lt;br /&gt;
 ; This setting has no effect if track_id is not set&lt;br /&gt;
 ;track_id_base=&lt;br /&gt;
&lt;br /&gt;
In order to allow communication over MAP through SS7, sections configurating application should exist for each role of the ussd_map module (gsmSCF/HLR). A ''camel_map.conf'' section configuring an application looks like this:&lt;br /&gt;
 &lt;br /&gt;
 ;[local appName]&lt;br /&gt;
 ; This section configures a local application which transmits the XML messages as internal Yate messages&lt;br /&gt;
 &lt;br /&gt;
 ; translator: string: name of translator to be used by this application.&lt;br /&gt;
 ; Must be one one the [tcap ...] sections configured in the camel_map.conf file.&lt;br /&gt;
 ;translator=&lt;br /&gt;
  &lt;br /&gt;
 ; capabilities: string: List of capabilities separated by commas which this application supports&lt;br /&gt;
 ;capabilities=&lt;br /&gt;
  &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into a Yate message&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - string: pass the XML as a string&lt;br /&gt;
 ;  - object: pass the XML as an object&lt;br /&gt;
 ;  - both: pass the XML as a string and object&lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; enable: bool: Enable this application&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
&lt;br /&gt;
The translator setting refers to a section of the type defined below which configures atachement to a TCAP instance&lt;br /&gt;
&lt;br /&gt;
 ;[tcap map]&lt;br /&gt;
 ; This section configures a TCAP User MAP/CAMEL protocol translator&lt;br /&gt;
 &lt;br /&gt;
 ; enable: bool: Enable this translator&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of TCAP User &lt;br /&gt;
 ; Allowed values are MAP or CAMEL&lt;br /&gt;
 ;type=MAP&lt;br /&gt;
 &lt;br /&gt;
 ; host: IP address: Address on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ;host=127.0.0.1 &lt;br /&gt;
 &lt;br /&gt;
 ; port: integer: Port on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ; Note: setting port to 0 will disable the listener, so it will not accept TCP applications&lt;br /&gt;
 ;port=5555&lt;br /&gt;
 &lt;br /&gt;
 ; tcap: string: Name of TCAP to which this TCAP user should attach itself to for the SS7 communication&lt;br /&gt;
 ;tcap=&lt;br /&gt;
 &lt;br /&gt;
 ; add-encoding: bool: Always add encoding attribute to XML elements for decoded parameters&lt;br /&gt;
 ;add-encoding=default from [general]&lt;br /&gt;
 &lt;br /&gt;
 ; add-timestamp: bool: Add to XML timestamps used for estimating application latency&lt;br /&gt;
 ;add-timestamp=default from [general] &lt;br /&gt;
 &lt;br /&gt;
 ; print-messages: bool: Debug option to print TCAP and XML messages. This option is applicable on reload.&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-string: string: Specifies what the ussd-String parameter will contain as data&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - octets: ussd-String will contain the octets as they were received&lt;br /&gt;
 ;  - text: ussd-String will contain the GSM7Bit decoded text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-string=text&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-decode: string: Specifies what ussd-String parameters should be decoded into text&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - none: ussd-String parameters will never be decoded into text&lt;br /&gt;
 ;  - first: ussd-String in a TCAP Begin message will be decoded into text&lt;br /&gt;
 ;  - all: all ussd-String parameters will be decoded into text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-decode=all&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for mapping of TCAP transactions to applications&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For load sharing (especially in cases of high loads), you can configure multiple applications using the same translator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 applications acting as a gsmSCF, each one attached to the TCAP instance with gsmSCF SSN, and 2 applications as HLR, each one attached to the TCAP instance with HLR SSN 6:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 track_id=ussdgw&lt;br /&gt;
 track_id_base=ussdgw/&lt;br /&gt;
 &lt;br /&gt;
 [tcap scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-scf                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false                                                                                                                           &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-hlr                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false   &lt;br /&gt;
 &lt;br /&gt;
 [local ussdscf1]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all                                                                                                                            &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [local ussdscf2]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all               &lt;br /&gt;
 &lt;br /&gt;
 [local ussdhlr1]&lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all                                                                                                                            &lt;br /&gt;
 &lt;br /&gt;
 [local ussdhlr2]                                                                                                                             &lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
The module is configured through ''ussd_map.conf''. The configuration file sets timeout parameters and processing threads parameters in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList for keeping dialogs&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
 &lt;br /&gt;
 ; component_ttl: integer: Component time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; Defaults to 600000 (10 minutes)&lt;br /&gt;
 ;component_ttl=600000&lt;br /&gt;
 &lt;br /&gt;
 ; dialog_idle_ttl: integer: Dialog idle (nothing sent/received) time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; It can be set to 0 to keep it alive until the remote party terminates the dialog&lt;br /&gt;
 ; Defaults to 86400000 (1 day)&lt;br /&gt;
 ;dialog_idle_ttl=86400000&lt;br /&gt;
&lt;br /&gt;
 ; dialog_ended_ttl: integer: Ended dialog time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000.&lt;br /&gt;
 ; It can be set to 0 to remove the dialog after termination&lt;br /&gt;
 ; Defaults to 0&lt;br /&gt;
 ;dialog_ended_ttl=0&lt;br /&gt;
 &lt;br /&gt;
 ; dispatcher_maxthreads: integer: Maximum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ; NOTE: if the value is set to 0, the module will enqueue the messages into YATE's engine.&lt;br /&gt;
 ;dispatcher_maxthreads=0&lt;br /&gt;
&lt;br /&gt;
 ; dispatcher_minthreads: integer: Minimum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ;dispatcher_minthreads=1&lt;br /&gt;
&lt;br /&gt;
 ;dispatcher_priority: string: Default priority of message dispatch threads&lt;br /&gt;
 ;dispatcher_priority=normal&lt;br /&gt;
&lt;br /&gt;
 ; floodevents: integer: Threshold for signaling congestion when the number of messages waiting to be dispatched exceeds it.&lt;br /&gt;
 ; When entering congestion, all new MAP dialogs and USSD sessions will be refused.&lt;br /&gt;
 ; 0 disables the mechanism&lt;br /&gt;
 ;floodevents=0&lt;br /&gt;
&lt;br /&gt;
 ; congestion_exit_factor: double: Factor used to calculate the exit congestion threshold&lt;br /&gt;
 ; NOTE: if the factor results in a exit congestion threshold of 0 or greater than floodevents, &lt;br /&gt;
 ; the setting will be overriden and the exit congestion threshold will be set to 1.&lt;br /&gt;
 ;congestion_exit_factor=0.5&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Timeout settings should be correlated with timeout settings in TCAP and SMPP, each having its own timeout mechanism.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gateway applications which do the MAP &amp;lt;-&amp;gt; USSD translation are configured through section like the one below:&lt;br /&gt;
&lt;br /&gt;
 [appName]&lt;br /&gt;
 ; section name is the name of the camel_map application, it must correspond to a [local appName] section in camel_map &lt;br /&gt;
&lt;br /&gt;
 ; enable: boolean: Enable this application&lt;br /&gt;
 ; Defaults to yes&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of MAP &amp;lt;-&amp;gt; USSD translator: &lt;br /&gt;
 ;  - SCF means that is the part that receives new dialogs from the HLR (user initiated USSD)&lt;br /&gt;
 ;  - HLR is the part that receives new dialogs from gsmSCF (network initiated USSD)&lt;br /&gt;
 ; This setting cannot be changed on reload.&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into &lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; print_msg: boolean: Print sent/received messages to output&lt;br /&gt;
 ;print_msg=no&lt;br /&gt;
  &lt;br /&gt;
 ; print_xml: boolean: Print sent/received XML data to output&lt;br /&gt;
 ;print_xml=no&lt;br /&gt;
 &lt;br /&gt;
 ; local_addr. : prefix: Parameters prefixed with this set the local SCCP address of this application &lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; local_addr.CallingPartyAddress.route=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.ssn=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.pointcode=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.nature=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.plan=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.translation=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.encoding= &lt;br /&gt;
 &lt;br /&gt;
 ; default_routing: bool : Do routing to default address for all messages&lt;br /&gt;
 ; default_routing=no&lt;br /&gt;
 &lt;br /&gt;
 ; default_addr. : prefix: parameters prefixed with this will be used as the default SCCP called address&lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; default_addr.application=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.route=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.ssn=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.pointcode=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.nature=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.translation=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.encoding=&lt;br /&gt;
 &lt;br /&gt;
 ; hlr_ssn: integer: The SSN expected in the calling address from a HLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;hlr_ssn=6&lt;br /&gt;
 &lt;br /&gt;
 ; vlr_ssn: integer: The SSN expected in the calling address from a VLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;vlr_ssn=7&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each section should have its own equivalent in ''camel_map.conf''.&lt;br /&gt;
In the USSD GW scenario, at least tho applications are needed, one acting as SCF, one as HLR. For load sharing multiple gsmSCF and HLR applications can be configured (see the configuration example below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 gsmSCF applications and 2 HLR applications, each one corresponding with a application section in the ''camel_map.conf'' example:&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 component_ttl=600000                                                                                                                         &lt;br /&gt;
 dialog_ended_ttl=0                                                                                                                           &lt;br /&gt;
 dispatcher_maxthreads=10                                                                                                                     &lt;br /&gt;
 dispatcher_minthreads=5                                                                                                                      &lt;br /&gt;
 ;dispatcher_priority=normal                                                                                                                  &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [ussdscf1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
&lt;br /&gt;
 [ussdscf2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
 &lt;br /&gt;
 [ussdhlr1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                         &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd                                                                                              &lt;br /&gt;
                                                   &lt;br /&gt;
 [ussdhlr2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
TODO - configuration explanations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''NOTE''' The module encodes text to ASCII for default encoding (configuration parameter ''default_encoding_type'').&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example''''&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
 server=smpp-server                                                                                                                           &lt;br /&gt;
 track_id=ussdgw                                                                                                                              &lt;br /&gt;
 track_id_base=ussdgw/                                                                                                                        &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [smpp-server]                                                                                                                                &lt;br /&gt;
 enable=true                                                                                                                                  &lt;br /&gt;
 session_responseinterval=600000                                                                                                              &lt;br /&gt;
 sessionset_process_max=1                                                                                                                     &lt;br /&gt;
 codec_warndefaults=false                                                                                                                     &lt;br /&gt;
 print-messages=no                                                                                                                            &lt;br /&gt;
                                                                                                                                            &lt;br /&gt;
 [listenerserver server]                                                                                                                      &lt;br /&gt;
 ;enable=yes                                                                                                                                  &lt;br /&gt;
 addr=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=12345&lt;br /&gt;
 ; use GSM 7 Bit for default SMPP encoding&lt;br /&gt;
 default_encoding_type=gsm7bit&lt;br /&gt;
&lt;br /&gt;
=== Monitoring ===&lt;br /&gt;
&lt;br /&gt;
This section details comands through which the state of the USSD GW can be monitored.&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
* '''Congestion state monitoring'''&lt;br /&gt;
&lt;br /&gt;
The ''ussd_map'' module will generate an alarm when entering/exiting a congestion state. If SNMP support is enabled, this will generate a trap on SNMP.&lt;br /&gt;
The congestion status is also reported in the ''state'' entry in the result of the module status command.&lt;br /&gt;
&lt;br /&gt;
* '''Module status'''&lt;br /&gt;
&lt;br /&gt;
The module reports its status through the following command in the YATE telnet console:&lt;br /&gt;
&lt;br /&gt;
 status ussd_map&lt;br /&gt;
&lt;br /&gt;
The command will print the following information:&lt;br /&gt;
&lt;br /&gt;
 workers=count_of_dispatching_threads,messages=count_msg,dialogs=count_of_dialogs,state=normal,count=count_of_applications;format=Type | CurrentDlgs| MAPCreated | UssdCreated |DefaultRouted | MAPSent | MapRecv | USSDSent | USSDRecv | MAPAbort | USSDAbort | BuiltAbort | MAPTimeouts | USSDTimeouts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
* workers: current number of used dispatching threads from the maximum configured pool (e.g., 3/10 means 3 threads are used of a pool of 10)&lt;br /&gt;
* messages: count of messages waiting on the dispatching queue of the engine&lt;br /&gt;
* dialogs: total number of USSD sessions currently handled by all applications&lt;br /&gt;
* state of the engine: normal/congestion&lt;br /&gt;
* count: number of applications acting either as gsmSCF, either as HLR&lt;br /&gt;
* format: name of the application for which the following data is reported:&lt;br /&gt;
** Type: role of the application: SCF (communicates with real HLR), HLR (communicates with real gsmSCF)&lt;br /&gt;
** CurrentDlgs: number of current MAP dialogs handled by this application&lt;br /&gt;
** MAPCreated: number of sessions (dialogs) started by the MAP side&lt;br /&gt;
** UssdCreated: number of sessions (dialogs) started by the SMPP side&lt;br /&gt;
** DefaultRouted: number of dialogs for which failover took place&lt;br /&gt;
** MAPSent: number of MAP messages sent to gsmSCF/HLR. It doesn't count the ones sent via failover routing.&lt;br /&gt;
** MAPRecv: number of MAP messages received from gsmSCF/HLR&lt;br /&gt;
** USSDSent: number of sent ussd.execute/ussd.update/ussd.finalize messages towards the SMPP side.&lt;br /&gt;
** USSDRecv: number of received ussd.execute/ussd.update/usdd.notify messages from SMPP side.&lt;br /&gt;
** MAPAbort: number of dialog aborts generated by MAP side&lt;br /&gt;
** USSDAbort: number of dialog aborts generated by USSD side&lt;br /&gt;
** BuiltAbort: number of dialog aborts generated by the ussd_map module (e.g., not having a ussd.update message processed by anyone will cause ussd_map to generate session abort)&lt;br /&gt;
** MAPTimeouts: number of dialog timeouts generated by MAP side&lt;br /&gt;
** USSDTimeouts: number of timeouts reported by USSD side&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Module control commands'''&lt;br /&gt;
&lt;br /&gt;
The module offers the following control commands through the telnet console:&lt;br /&gt;
* ''control ussd_map appName print-msg [yes|no|verbose]'' : enable printing of received/sent map./ussd./messages.&lt;br /&gt;
* ''control ussd_map appName print-xml [yes|no|verbose]'' : enable printing of received/sent XMLs.&lt;br /&gt;
* ''control ussd_map appName export-xml-as [string|object|both]'' : change the way XML is set in the internal messages&lt;br /&gt;
* ''control ussd_map start_stats'' : begin gathering data for statistics&lt;br /&gt;
* ''control ussd_map stop_stats'' : stop gathering data for statistics&lt;br /&gt;
* ''control usdd_map stats'' : print statistic data per engine and each application in part. Data contains number of MAP messages handled per second, number of USSD messages handled per second, maximum number of current dialogs, number of timeouts and number of aborts.&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
The ysmpp module provides the following options for status command:&lt;br /&gt;
&lt;br /&gt;
'NOTE' the module_name can take the following values: smppserver or smppclient.&lt;br /&gt;
&lt;br /&gt;
* status module_name listeners&lt;br /&gt;
Prints the module listeners status in format: Address|Status|Reason.&lt;br /&gt;
&lt;br /&gt;
* status module_name sessions&lt;br /&gt;
Prints the status of the sessions in format: Id|State|BindMode|SystemId|IpAddress:Port|Congested|Incoming Queue|Outgoing Queue;&lt;br /&gt;
&lt;br /&gt;
** Id: The ID of the SMPP session. Can be used for routing.&lt;br /&gt;
** State: The state of the SMPP session.&lt;br /&gt;
** BindMode: The mode in which the session was bound. (Send/Recv/SendRecv)&lt;br /&gt;
** SystemId: The id with which the session has been authenticated. Can be used in routing.&lt;br /&gt;
** IpAddress:Port: The Ip Address and port of the remote end of the session.&lt;br /&gt;
** Congested: True if this session is in congestion state.&lt;br /&gt;
** Incoming Queue: The number of messages not processed in the incoming queue.&lt;br /&gt;
** Outgoing Queue: The number of messages not processed in the outgoing queue.&lt;br /&gt;
&lt;br /&gt;
*status module_name ussd overview&lt;br /&gt;
Prints the stats of the USSD sessions in format: Total|Active|Average Duration|Total Sent|Total Received|AverageTrafficPerSecond|EndedWithErrors|CongestionRefused&lt;br /&gt;
&lt;br /&gt;
** Total: the number of USSD sessions created since the starting of the program.&lt;br /&gt;
** Active: the number of USSD sessions currently active.&lt;br /&gt;
** Average Duration: average duration of a ussd session.&lt;br /&gt;
** Total Sent: total number of SMPP messages sent for USSD sessions.&lt;br /&gt;
** Total Received: total number of SMPP messages received for USSD sessions.&lt;br /&gt;
** AverageTrafficPerSecond: average traffic per second for USSD sessions.&lt;br /&gt;
** EndedWithErrors: the number of USSD sessions that ended with error.&lt;br /&gt;
** CongestionRefused: the number of USSD sessions refused because the server was overloaded.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* Mobile Application Part (MAP) specification: ETSI TE 129 002&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/USSD_GW</id>
		<title>USSD GW</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/USSD_GW"/>
				<updated>2014-02-06T16:09:24Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: /* ysmpp module */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an implementation an USSD gateway acting as a MAP Service Control Function (gsmSCF) and as a HLR at the same time. When communicating with a HLR or VLR, the YATE USSD GW acts as a gsmSCF. When communicating with a gsmSCF, the YATE USSDGW acts as a HLR.&lt;br /&gt;
The functionality of the USSD GW allows:&lt;br /&gt;
* redirecting of USSD requests arriving either from user side or gsmSCF side to a SMPP client where they can be altered.&lt;br /&gt;
* acting as a proxy for requests that need not be handled by SMPP clients or when the SMPP handling fails&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MAP USSD description ==&lt;br /&gt;
&lt;br /&gt;
In versions 2 and 3 of the GSM MAP protocol there are 3 operations used for USSD operations:&lt;br /&gt;
* processUnstructedSS-Request&lt;br /&gt;
* unstructuredSS-Request&lt;br /&gt;
* unstrusturedSS-Notify&lt;br /&gt;
&lt;br /&gt;
The are 2 scenarios for USSD operations:&lt;br /&gt;
* mobile initiated USSD requests&lt;br /&gt;
* network initiated USSD requests&lt;br /&gt;
&lt;br /&gt;
A TCAP dialog used by USSD is always terminated by the network side.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mobile initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobile initiated USSD requests are USSD requests started by the mobile subscriber.  &lt;br /&gt;
&lt;br /&gt;
A USSD request is started when receiving a TCAP BEGIN message containing the ''processUnstructedSS-Request'' Invoke operation. The request can be handled by the VLR, HLR or a gsmSCF. If the VLR does not handle the request, it will transmit it to the HLR. The HLR can either handle it itself or it can transmit it to a gsmSCF for handling.&lt;br /&gt;
&lt;br /&gt;
At this point, the network can either send a response to the request immediately or request additional information. In the first case, the handler of the request will send a TCAP End with ''processUnstructuredSS-Request'' ResultLast containing the result for the request. &lt;br /&gt;
In the latter case, the network will send a TCAP CONTINUE with ''unstructuredSS-Request'' Invoke operation. The response of the mobile subscriber to this request will be passed to the network in a TCAP CONTINUE with ''unstructuredSS-Request'' ResultLast component. At this point, if the network decides that it has enough information for providing the response to the user, it will send a TCAP END with ''processUnstructuredSS-Request'' ResultLast. Otherwise, it can request further information through another ''unstructuredSS-Request'' Invoke operation.&lt;br /&gt;
&lt;br /&gt;
=== Network initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD requests are USSD requests started by the network towards a certain subscriber.&lt;br /&gt;
&lt;br /&gt;
Requests made by the network can be of one of two types:&lt;br /&gt;
* user interaction requests&lt;br /&gt;
* network notification requests.&lt;br /&gt;
&lt;br /&gt;
User interaction requests are USSD requests that the network makes in which it requires some type of information back from the mobile subscriber. These are started by the network through a TCAP BEGIN containing an ''unstructuredSS-Request'' Invoke. The answer from the mobile subscriber will be received in a TCAP CONTINUE containing an ''unstructuredSS-Request'' ResultLast. If the network still wants to request further information, it will repeat the process. Otherwise, it will send a TCAP END to close the TCAP dialog.&lt;br /&gt;
&lt;br /&gt;
Network notification requests are USSD requests in which the network only sends a notification to the user. This is achieved by sending a TCAP BEGIN message containing a ''unstructuredSS-Notify'' Invoke. The mobile subscriber side will only respond with a TCAP CONTINUE containing an empty ''unstructuredSS-Notify'' in order to signal that the notification was received. The network will close the TCAP dialog through TCAP END.&lt;br /&gt;
&lt;br /&gt;
=== MAP USSD parameters ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following list describe common parameters used across all MAP USSD operations:&lt;br /&gt;
* ''destinationReference'': this parameter will contain either an MSISDN or an IMSI. In the case of mobile originated USSD request, this will identify the user which made the request. In the case of network initiated requests, it will identify the mobile user to be contacted for this request.&lt;br /&gt;
* ''ussd-String'': for ''processUnstructuredSS-Request'' Invoke it contains the dialed USSD code, for the result it would probably contain a message from the network detailing the result of the request. For ''unstructuredSS-Request'' Invoke it will contain a message asking for the user to choose some option and for the result it will contain the option chosen by the user. In the case of ''unstructuredSS-Notify'', this parameter will only be present in the Invoke.&lt;br /&gt;
* ''ussd-DataCodingScheme'': this is a parameter which specifies in which way the ''ussd-String'' parameter is encoded and it is present whenever ''ussd-String'' is present. E.g., this parameter would indicate if the ''ussd-String'' is encoded using GSM7bit encoding or UCS2.&lt;br /&gt;
&lt;br /&gt;
== SMPP USSD description ==&lt;br /&gt;
&lt;br /&gt;
'''TO DO'''&lt;br /&gt;
&lt;br /&gt;
== System description ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== System design ===&lt;br /&gt;
&lt;br /&gt;
In order to provide the specified functionality, the system makes use of the following YATE components:&lt;br /&gt;
* the SS7 stack  present in YATE &lt;br /&gt;
* the camel_map module which decodes/encodes MAP messages coming from the SS7 network to/from internal YATE messages containing MAP operations in XML form. Together with the SS7 layer this provides MAP connectivity with HLR/gsmSCF.&lt;br /&gt;
* the ussd_map module which takes internal MAP messsages decoded by the camel_map moduled and translates them to internal USSD messages. This module acts as gsmSCF towards a HLR and as a HLR towards a gsmSCF.&lt;br /&gt;
* the SMPP stack present in YATE (ysmpp module) which is able to catch internal USSD messages and transmit them over SMPP. It also translates SMPP messages into internal USSD messages.&lt;br /&gt;
* requests for new USSD sessions will go through routing to decide who should handle the request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following sections detail the behaviour of the system in the different USSD scenarios.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mobile originated USSD handling ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A user initiated USSD session is handled according to the following schema:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# HLR sends a ''processUnstructuredSS-Request (Invoke)'' for code *100#. camel_map decodes the ''ussd-String'' into ''ussd-Text=*100#''.&lt;br /&gt;
# the ussd_map module (gsmSCF side) processes the request received from the HLR and emits a ''call.route'' message with ''called=*100#''.&lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with the ''callto'' parameter set to the value returned from routing. ussd_map dispatches the ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will send  it to the target specified in ''callto'' parameter after the module prefix ''ysmppserver/''.&lt;br /&gt;
# The ysmpp module receives and process the received ''submit_sm'' message.&lt;br /&gt;
# The ysmpp module will send a ''call.route'' message with the ''called=*100#''.&lt;br /&gt;
# The ysmpp module emits a ''ussd.execute'' message with ''callto=retvalue from call.route'' message.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ussd.execute message and if it is the target of the message, meaning that ''callto'' starts with ''ussd_map/''. From that message it will build a map.message that it will send to the gsmSCF as a ''processUnstructuresSS-Request (Invoke)'' MAP message.&amp;lt;br&amp;gt;'''NOTE:''' From here on, the gsmSCF could handle the request in one of  two distinguished cases: one where the gsmSCF requires interaction with the mobile subscriber and one where the gsmSCF just needs to respond to the user request. The following steps detail the former case.&amp;lt;br&amp;gt;&lt;br /&gt;
# gsmSCF sends an ''unstructuredSS-Request (Invoke)'' to  request further information.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits an ''ussd.update'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.update'' message and confirms to the SMPP client that the message sent in step 5 was processed.&lt;br /&gt;
# The SMPP client should confirm the processing of the SMPP message sent in step 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver_sm'' message to the SMPP client with the menu received in ''ussd.update'' message.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message with the received menu.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message from SMPP client and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.update'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time in which the mobile subscribers responds can be quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway when receiving the response from the mobile subscriber.&lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 13.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 21.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 9 and 24 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''processUnstructuredSS-Request (ResultLast)''  for the initial user request.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''processUnstructuredSS-Request (ResultLast)'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 22 or 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 21 or 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 31.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 29.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''processUnstructuredSS-Request (ResultLast)''.&lt;br /&gt;
&lt;br /&gt;
==== Network initiated USSD Request ====&lt;br /&gt;
&lt;br /&gt;
A network initiated USSD session is handled as described in the following figure:&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
# gsmSCF sends''unstructuredSS-Request (Invoke)'' to USSD Gateway (HLR part) to present a menu for MSISDN 0015559191.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits a ''call.route'' message with called=0015559191. &lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with ''callto'' set to the route returned in the return value of the ''call.route'' message and dispatches an ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will then send to the target specified in the ''callto'&amp;quot; parameter after the ''ysmppserver'' module prefix.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message towards SMPP server.&lt;br /&gt;
# The SMPP server processes the received ''submit_sm'' message and dispatches a ''call.route'' message.&lt;br /&gt;
# After successfully dispatching of ''call.route'' message the SMPP server will dispatch a ''call.execute'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.execute'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time to receiving a response from the user after gsmSCF has requested user interaction could be possibly quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway &lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 4.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 13.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 1 and 16 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''TCAP END'' in order to finish the USSD session.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''TCAP END'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 13.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 22.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 21.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''END''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fallback/Proxy mode ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following images detail scenarios where the USSD GW is instructed to do failover.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when an HLR sends ''processUnstructuredSS-Request (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:''' &lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message. &lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD session fallback.&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when a gsmSCF sends a &amp;quot;unstructuredSS-Request/unstructuredSS-Notify (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:'''&lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message.&lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The SMPP USSD gateway will also be bypassed when the ''ussd_map'' module is configured to do failover for all requests.&lt;br /&gt;
&lt;br /&gt;
Any type of SMPP error received either in the result for the ''ussd.execute'' or in the first message back from SMPP that does not have a mapping on MAP will lead to the ''ussd_map'' module doing failover. Errors that would generate a failover are errors like timeout, session ended abnormally, unknown errors, congestion errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once ''ussd_map'' decides that failover should be done, it will use the original received message  from the HLR (MO case)/gsmSCF (MT case) and it will only alter the called address to be the one of the gsmSCF/HLR set for the failover.. The calling address will remain the one received from HLR/gsmSCF, the idea being that for the first message we want to pretend that we are the original gsmSCF/HLR. When the receiving end of this message will want to respond, it will use the calling address from the message. Seeing that the ''ussd_map'' module set it to the original calller's address, further messages exchanged in that dialog between HLR and gsmSCF will not pass through USSD GW again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Internal message API ====&lt;br /&gt;
&lt;br /&gt;
This section documents the YATE messages used internally by the USSD GW.&lt;br /&gt;
&lt;br /&gt;
===== call.route =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used by ussd_map and ysmpp module to determine a destination where a new USSD session should be sent for further processing.&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module when receiving a request for a new USSD session on MAP for ''ussd_map'' or on SMPP for ''ysmpp''.&lt;br /&gt;
''ussd_map'' will only send this message if default routing is not enabled from configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
* module&lt;br /&gt;
** type: string &lt;br /&gt;
** Name of the module which requested routing&lt;br /&gt;
* application&lt;br /&gt;
** type: string&lt;br /&gt;
** Name of the ussd_map application which sent this routing request&lt;br /&gt;
* route_type&lt;br /&gt;
** type: keyword, value: ussd &lt;br /&gt;
** Specifies routing type, in this case it'll be USSD routing&lt;br /&gt;
* smpp_session_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
* smpp_system_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* if the message was processed, the return value of the message indicates the destination of the subsequent ''ussd.execute'' message.&lt;br /&gt;
* if the message was not processed or it returned with error (signaled by the return value being either &amp;quot;-&amp;quot; or &amp;quot;error&amp;quot;)&lt;br /&gt;
** ''ussd_map'' will do failover&lt;br /&gt;
** ysmpp will close the SMPP session, indicating an error either set by the call.route or either set to the default unknown error indication.&lt;br /&gt;
&lt;br /&gt;
===== ussd.execute =====&lt;br /&gt;
&lt;br /&gt;
This message is used to begin a new USSD session:&lt;br /&gt;
* on SMPP, if the message is directed to the ''ysmpp'' module&lt;br /&gt;
* on MAP if the message is directed to the ''ussd_map'' module&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module after successful routing stage. In case of the ''ussd_map'' module, this is message is sent if the routing stage did not indicate failover necessity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* callto:  &lt;br /&gt;
** type : string&lt;br /&gt;
** It specifies the target module to process the message. The string should start with  'ysmppserver/' for the  ''ysmpp&amp;quot; module and with ''ussd_map/'' for the ''ussd_map'' module.&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier assigned for this USSD session by the entity that processed this message.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error returned if the message was not processed.&lt;br /&gt;
&lt;br /&gt;
Processing of this message will return failure:&lt;br /&gt;
* if the message will not be processed&lt;br /&gt;
* if the 'id' parameter is missing.&lt;br /&gt;
* in case of processing error &lt;br /&gt;
* in case of congestion&lt;br /&gt;
&lt;br /&gt;
===== ussd.update =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used for transmitting USSD messages during a USSD session. This type of message will be used after the initial stage of creating the session through ''ussd.execute'' has succeeded.&lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP CONTINUE message &lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will be refused if it is received after a ''ussd.finalize'' message.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a values not allowed in the context of the USSD session (e.g., sending a ''processUnstructuredSS-Request inside a ''ussd.update'' message)&lt;br /&gt;
&lt;br /&gt;
===== ussd.finalize =====&lt;br /&gt;
&lt;br /&gt;
This message is used to signal the termination of the USSD session. Successful processing of this message means that the USSD session was terminated and is no longer available. &lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP END/ABORT message depending upon the parameters received. A message containing an error that does not map to a MAP error will generate a TCAP ABORT.&lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client, a message that will usually contain a last message indication.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by 'peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a value not allowed in the context of the USSD session&lt;br /&gt;
&lt;br /&gt;
===== Keyword values =====&lt;br /&gt;
&lt;br /&gt;
This section details acceptable values for parameters listed as having type ''keyword''.&lt;br /&gt;
&lt;br /&gt;
* '''hlr.nature/vlr.nature/gsmscf.nature/destination_reference.nature'''&lt;br /&gt;
** unknown&lt;br /&gt;
** international&lt;br /&gt;
** national&lt;br /&gt;
** network-specific&lt;br /&gt;
** subscriber&lt;br /&gt;
** abbreviated&lt;br /&gt;
&lt;br /&gt;
* '''hlr.plan/vlr.plan/gsmscf.plan/destination_reference.plan'''&lt;br /&gt;
** unknown&lt;br /&gt;
** isdn&lt;br /&gt;
** data&lt;br /&gt;
** telex&lt;br /&gt;
** land-mobile&lt;br /&gt;
** national&lt;br /&gt;
** private&lt;br /&gt;
&lt;br /&gt;
* '''operation_type'''&lt;br /&gt;
** pssd: mapping of MAP v1 USSD operation ''processUnstructuredSS-Data'' and of SMPP operation ''PSSD''. &lt;br /&gt;
** pssr: mapping of MAP v2 USSD operation ''processUnstructuredSS-Request'' and of SMPP operation ''PSSR''.&lt;br /&gt;
** ussr: mapping of MAP v2 USSD operation ''unstructuredSS-Request'' and of SMPP operation ''USSR&amp;quot;.&lt;br /&gt;
** ussn: mapping of MAP v2 USSD operation ''unstructuredSS-Notify'' and of SMPP operation ''USSN''.&lt;br /&gt;
&lt;br /&gt;
* '''error'''&lt;br /&gt;
** invalid_logic:  error reported when required processing does not follow USSD rules (e.g., MT request starting with ''processUnstructuredSS-Requests'')&lt;br /&gt;
** system_failure: error mapping for MAP error ''systemFailure''.&lt;br /&gt;
** data_missing: error mapping for  MAP error ''dataMissing''.&lt;br /&gt;
** unexpected_data: error mapping for MAP error ''unexpectedDataValue''.&lt;br /&gt;
** unknown_alphabet: error mapping for MAP error ''unknownAlphabet''.&lt;br /&gt;
** absent_subscriber: error mapping for MAP error ''absentSubscriber''.&lt;br /&gt;
** illegal_subscriber: error mapping for MAP error ''illegalSubscriber''.&lt;br /&gt;
** illegal_equipment: error mapping for MAP error ''illegalEquipment''.&lt;br /&gt;
** ussd_busy: error mapping for MAP error ''ussd-Busy''.&lt;br /&gt;
** call_barred: error mapping for MAP error ''callBarred''.&lt;br /&gt;
** network_failure: error signaling message transmission failure due to  connectivity issues either on the SS7 side or SMPP side.&lt;br /&gt;
** timeout_expired: error signaling a  request timeout occurrence.&lt;br /&gt;
** ussd_sess_end_abnormally: error signaling USSD session termination due to an unknown cause. Mapping for this error implies a TCAP Abort either being generated of received. &lt;br /&gt;
** unknown_error: error specified when there is no available mapping for an errror from SMPP to MAP or vice versa.&lt;br /&gt;
** throttling_error: error signaling that a message failed to be processed due to processing side being in congestion state.&lt;br /&gt;
** protocol_error: SMPP generic error. This error is put whenever there is a SMPP specific error that cannot be mapped into one of the other errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== SMPP custom parameters ====&lt;br /&gt;
&lt;br /&gt;
* 0x1502 =&amp;gt; IMSI;&lt;br /&gt;
* 0x1503 =&amp;gt; VLR Type of Number;&lt;br /&gt;
* 0x1504 =&amp;gt; VLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1505 =&amp;gt; VLR address;&lt;br /&gt;
* 0x1506 =&amp;gt; GSM SCF Type of Number;&lt;br /&gt;
* 0x1507 =&amp;gt; GSM SCF Numbering Plan Indicator;&lt;br /&gt;
* 0x1508 =&amp;gt; GSM_SCF address;&lt;br /&gt;
* 0x1509 =&amp;gt; Destination Reference Type of Number;&lt;br /&gt;
* 0x150a =&amp;gt; Destination Reference Numbering Plan Indicator;&lt;br /&gt;
* 0x150b =&amp;gt; Destination Reference;&lt;br /&gt;
* 0x150c =&amp;gt; MSISDN&lt;br /&gt;
* 0x150d =&amp;gt; Alerting Pattern&lt;br /&gt;
* 0x1800 =&amp;gt; HLR Type of Number;&lt;br /&gt;
* 0x1801 =&amp;gt; HLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1802 =&amp;gt; HLR address.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
==== ysigchan module ====&lt;br /&gt;
&lt;br /&gt;
In order to have MAP connectivity, TCAP instances must be configured in ''ysigchan.conf'': &lt;br /&gt;
&lt;br /&gt;
 ; Example of a SS7 Transaction Capabilities Application Part&lt;br /&gt;
 ; This component is created when encountering a section of this kind&lt;br /&gt;
 ;[ss7tcap]&lt;br /&gt;
 ; type: keyword: identifies the component as a SS7 Transfer Capabilities Application Part&lt;br /&gt;
 ; type = ss7-tcap-ansi for ANSI TCAP&lt;br /&gt;
 ; type = ss7-tcap-itu for ITU TCAP&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; local_SSN: local SubSystem Number. Mandatory&lt;br /&gt;
 ;local_SSN=&lt;br /&gt;
 &lt;br /&gt;
 ; default_remote_SSN: remote SubSystem Number to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_SSN=&lt;br /&gt;
  &lt;br /&gt;
 ; default_remote_pointcode: remote Point Code to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_pointcode=&lt;br /&gt;
 &lt;br /&gt;
 ; pointcodetype: remote Point Code type. See above documentation for available types&lt;br /&gt;
 ;pointcodetype=&lt;br /&gt;
 &lt;br /&gt;
 ; sccp: Name of the SCCP component to create and be used by this TCAP&lt;br /&gt;
 ; A section with the name given here must exist in order to configure the SCCP level&lt;br /&gt;
 ;sccp=&lt;br /&gt;
 &lt;br /&gt;
 ; default_hopcounter: HopCounter provided to SCCP if the application does not provide one&lt;br /&gt;
 ; Values range 1-15, 0 or boolean false disables, boolean true sets to 15&lt;br /&gt;
 ; A non-zero value will force using XUDT or LUDT instead of UDT messages&lt;br /&gt;
 ;default_hopcounter=false&lt;br /&gt;
 &lt;br /&gt;
 ; transact_timeout: Time in seconds to timeout a TCAP transaction after no more activity was registered on it&lt;br /&gt;
 ; NOTE: Values below 15 seconds will be ignored and the timer will assume the default value.&lt;br /&gt;
 ; Defaults to 300 seconds&lt;br /&gt;
 ;transact_timeout=300&lt;br /&gt;
 &lt;br /&gt;
 ; max_timeout_checks: integer: Maximum number of timeout checks done on a transaction without starting the transaction&lt;br /&gt;
 ;  timer before forcefully starting the transaction timer&lt;br /&gt;
 ; Defaults to 10&lt;br /&gt;
 ;max_timeout_checks=10 &lt;br /&gt;
 &lt;br /&gt;
 ; timeout_check: Time interval in milliseconds to check for timeouts.&lt;br /&gt;
 ; Default to 100 ms&lt;br /&gt;
 ;timeout_check=100 &lt;br /&gt;
 &lt;br /&gt;
 ; floodevents: int: How many queued incoming TCAP messages trigger a congestion warning and the drop mechanism&lt;br /&gt;
 ;  for Unidirectional/Begin/QueryWithPermission/QueryWithoutPermission messages.&lt;br /&gt;
 ;  Exit from congestion will take place when there are less the floodevents/4 messages in the queue&lt;br /&gt;
 ; NOTE! Setting this parameter to 0 will disable the congestion warning and protection. Setting it to one will &lt;br /&gt;
 ;  be overriden and floodevents will be set to 2.&lt;br /&gt;
 ;floodevents=1000&lt;br /&gt;
 &lt;br /&gt;
 ;print-messages: Boolean to enable/disable printing of decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ;extended-debug: Boolean to enable/disable printing of the step-by-step decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload. print-messages must be true.&lt;br /&gt;
 ;extended-debug=false&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for keeping the list of current transactions&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
 [tcap-scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=147                                                                                                                                &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                     &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap-hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=7                                                                                                                                  &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Further configuration for SS7 connectivity is required (SCCP, MTP3, etc.).&lt;br /&gt;
&lt;br /&gt;
==== camel_map module ====&lt;br /&gt;
&lt;br /&gt;
Configuring of tracking IDs is done in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ;track_id: string: Shared engine variable name used to obtain a unique tracking ID for TCAP transactions&lt;br /&gt;
 ; If not set, the module will not set a tracking ID for the TCAP transaction&lt;br /&gt;
 ;track_id=&lt;br /&gt;
 &lt;br /&gt;
 ;track_id_base: string: Optional string with which to prefix the tracking ID&lt;br /&gt;
 ; This setting has no effect if track_id is not set&lt;br /&gt;
 ;track_id_base=&lt;br /&gt;
&lt;br /&gt;
In order to allow communication over MAP through SS7, sections configurating application should exist for each role of the ussd_map module (gsmSCF/HLR). A ''camel_map.conf'' section configuring an application looks like this:&lt;br /&gt;
 &lt;br /&gt;
 ;[local appName]&lt;br /&gt;
 ; This section configures a local application which transmits the XML messages as internal Yate messages&lt;br /&gt;
 &lt;br /&gt;
 ; translator: string: name of translator to be used by this application.&lt;br /&gt;
 ; Must be one one the [tcap ...] sections configured in the camel_map.conf file.&lt;br /&gt;
 ;translator=&lt;br /&gt;
  &lt;br /&gt;
 ; capabilities: string: List of capabilities separated by commas which this application supports&lt;br /&gt;
 ;capabilities=&lt;br /&gt;
  &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into a Yate message&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - string: pass the XML as a string&lt;br /&gt;
 ;  - object: pass the XML as an object&lt;br /&gt;
 ;  - both: pass the XML as a string and object&lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; enable: bool: Enable this application&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
&lt;br /&gt;
The translator setting refers to a section of the type defined below which configures atachement to a TCAP instance&lt;br /&gt;
&lt;br /&gt;
 ;[tcap map]&lt;br /&gt;
 ; This section configures a TCAP User MAP/CAMEL protocol translator&lt;br /&gt;
 &lt;br /&gt;
 ; enable: bool: Enable this translator&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of TCAP User &lt;br /&gt;
 ; Allowed values are MAP or CAMEL&lt;br /&gt;
 ;type=MAP&lt;br /&gt;
 &lt;br /&gt;
 ; host: IP address: Address on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ;host=127.0.0.1 &lt;br /&gt;
 &lt;br /&gt;
 ; port: integer: Port on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ; Note: setting port to 0 will disable the listener, so it will not accept TCP applications&lt;br /&gt;
 ;port=5555&lt;br /&gt;
 &lt;br /&gt;
 ; tcap: string: Name of TCAP to which this TCAP user should attach itself to for the SS7 communication&lt;br /&gt;
 ;tcap=&lt;br /&gt;
 &lt;br /&gt;
 ; add-encoding: bool: Always add encoding attribute to XML elements for decoded parameters&lt;br /&gt;
 ;add-encoding=default from [general]&lt;br /&gt;
 &lt;br /&gt;
 ; add-timestamp: bool: Add to XML timestamps used for estimating application latency&lt;br /&gt;
 ;add-timestamp=default from [general] &lt;br /&gt;
 &lt;br /&gt;
 ; print-messages: bool: Debug option to print TCAP and XML messages. This option is applicable on reload.&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-string: string: Specifies what the ussd-String parameter will contain as data&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - octets: ussd-String will contain the octets as they were received&lt;br /&gt;
 ;  - text: ussd-String will contain the GSM7Bit decoded text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-string=text&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-decode: string: Specifies what ussd-String parameters should be decoded into text&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - none: ussd-String parameters will never be decoded into text&lt;br /&gt;
 ;  - first: ussd-String in a TCAP Begin message will be decoded into text&lt;br /&gt;
 ;  - all: all ussd-String parameters will be decoded into text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-decode=all&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for mapping of TCAP transactions to applications&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For load sharing (especially in cases of high loads), you can configure multiple applications using the same translator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 applications acting as a gsmSCF, each one attached to the TCAP instance with gsmSCF SSN, and 2 applications as HLR, each one attached to the TCAP instance with HLR SSN 6:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 track_id=ussdgw&lt;br /&gt;
 track_id_base=ussdgw/&lt;br /&gt;
 &lt;br /&gt;
 [tcap scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-scf                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false                                                                                                                           &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-hlr                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false   &lt;br /&gt;
 &lt;br /&gt;
 [local ussdscf1]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all                                                                                                                            &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [local ussdscf2]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all               &lt;br /&gt;
 &lt;br /&gt;
 [local ussdhlr1]&lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all                                                                                                                            &lt;br /&gt;
 &lt;br /&gt;
 [local ussdhlr2]                                                                                                                             &lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
The module is configured through ''ussd_map.conf''. The configuration file sets timeout parameters and processing threads parameters in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList for keeping dialogs&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
 &lt;br /&gt;
 ; component_ttl: integer: Component time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; Defaults to 600000 (10 minutes)&lt;br /&gt;
 ;component_ttl=600000&lt;br /&gt;
 &lt;br /&gt;
 ; dialog_idle_ttl: integer: Dialog idle (nothing sent/received) time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; It can be set to 0 to keep it alive until the remote party terminates the dialog&lt;br /&gt;
 ; Defaults to 86400000 (1 day)&lt;br /&gt;
 ;dialog_idle_ttl=86400000&lt;br /&gt;
&lt;br /&gt;
 ; dialog_ended_ttl: integer: Ended dialog time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000.&lt;br /&gt;
 ; It can be set to 0 to remove the dialog after termination&lt;br /&gt;
 ; Defaults to 0&lt;br /&gt;
 ;dialog_ended_ttl=0&lt;br /&gt;
 &lt;br /&gt;
 ; dispatcher_maxthreads: integer: Maximum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ; NOTE: if the value is set to 0, the module will enqueue the messages into YATE's engine.&lt;br /&gt;
 ;dispatcher_maxthreads=0&lt;br /&gt;
&lt;br /&gt;
 ; dispatcher_minthreads: integer: Minimum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ;dispatcher_minthreads=1&lt;br /&gt;
&lt;br /&gt;
 ;dispatcher_priority: string: Default priority of message dispatch threads&lt;br /&gt;
 ;dispatcher_priority=normal&lt;br /&gt;
&lt;br /&gt;
 ; floodevents: integer: Threshold for signaling congestion when the number of messages waiting to be dispatched exceeds it.&lt;br /&gt;
 ; When entering congestion, all new MAP dialogs and USSD sessions will be refused.&lt;br /&gt;
 ; 0 disables the mechanism&lt;br /&gt;
 ;floodevents=0&lt;br /&gt;
&lt;br /&gt;
 ; congestion_exit_factor: double: Factor used to calculate the exit congestion threshold&lt;br /&gt;
 ; NOTE: if the factor results in a exit congestion threshold of 0 or greater than floodevents, &lt;br /&gt;
 ; the setting will be overriden and the exit congestion threshold will be set to 1.&lt;br /&gt;
 ;congestion_exit_factor=0.5&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Timeout settings should be correlated with timeout settings in TCAP and SMPP, each having its own timeout mechanism.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gateway applications which do the MAP &amp;lt;-&amp;gt; USSD translation are configured through section like the one below:&lt;br /&gt;
&lt;br /&gt;
 [appName]&lt;br /&gt;
 ; section name is the name of the camel_map application, it must correspond to a [local appName] section in camel_map &lt;br /&gt;
&lt;br /&gt;
 ; enable: boolean: Enable this application&lt;br /&gt;
 ; Defaults to yes&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of MAP &amp;lt;-&amp;gt; USSD translator: &lt;br /&gt;
 ;  - SCF means that is the part that receives new dialogs from the HLR (user initiated USSD)&lt;br /&gt;
 ;  - HLR is the part that receives new dialogs from gsmSCF (network initiated USSD)&lt;br /&gt;
 ; This setting cannot be changed on reload.&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into &lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; print_msg: boolean: Print sent/received messages to output&lt;br /&gt;
 ;print_msg=no&lt;br /&gt;
  &lt;br /&gt;
 ; print_xml: boolean: Print sent/received XML data to output&lt;br /&gt;
 ;print_xml=no&lt;br /&gt;
 &lt;br /&gt;
 ; local_addr. : prefix: Parameters prefixed with this set the local SCCP address of this application &lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; local_addr.CallingPartyAddress.route=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.ssn=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.pointcode=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.nature=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.plan=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.translation=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.encoding= &lt;br /&gt;
 &lt;br /&gt;
 ; default_routing: bool : Do routing to default address for all messages&lt;br /&gt;
 ; default_routing=no&lt;br /&gt;
 &lt;br /&gt;
 ; default_addr. : prefix: parameters prefixed with this will be used as the default SCCP called address&lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; default_addr.application=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.route=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.ssn=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.pointcode=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.nature=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.translation=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.encoding=&lt;br /&gt;
 &lt;br /&gt;
 ; hlr_ssn: integer: The SSN expected in the calling address from a HLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;hlr_ssn=6&lt;br /&gt;
 &lt;br /&gt;
 ; vlr_ssn: integer: The SSN expected in the calling address from a VLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;vlr_ssn=7&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each section should have its own equivalent in ''camel_map.conf''.&lt;br /&gt;
In the USSD GW scenario, at least tho applications are needed, one acting as SCF, one as HLR. For load sharing multiple gsmSCF and HLR applications can be configured (see the configuration example below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 gsmSCF applications and 2 HLR applications, each one corresponding with a application section in the ''camel_map.conf'' example:&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 component_ttl=600000                                                                                                                         &lt;br /&gt;
 dialog_ended_ttl=0                                                                                                                           &lt;br /&gt;
 dispatcher_maxthreads=10                                                                                                                     &lt;br /&gt;
 dispatcher_minthreads=5                                                                                                                      &lt;br /&gt;
 ;dispatcher_priority=normal                                                                                                                  &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [ussdscf1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
&lt;br /&gt;
 [ussdscf2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
 &lt;br /&gt;
 [ussdhlr1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                         &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd                                                                                              &lt;br /&gt;
                                                   &lt;br /&gt;
 [ussdhlr2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
TODO - configuration explanations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''NOTE''' The module encodes text to ASCII for default encoding (configuration parameter ''default_encoding_type'').&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example''''&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
 server=smpp-server                                                                                                                           &lt;br /&gt;
 track_id=ussdgw                                                                                                                              &lt;br /&gt;
 track_id_base=ussdgw/                                                                                                                        &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [smpp-server]                                                                                                                                &lt;br /&gt;
 enable=true                                                                                                                                  &lt;br /&gt;
 session_responseinterval=600000                                                                                                              &lt;br /&gt;
 sessionset_process_max=1                                                                                                                     &lt;br /&gt;
 codec_warndefaults=false                                                                                                                     &lt;br /&gt;
 print-messages=no                                                                                                                            &lt;br /&gt;
                                                                                                                                            &lt;br /&gt;
 [listenerserver server]                                                                                                                      &lt;br /&gt;
 ;enable=yes                                                                                                                                  &lt;br /&gt;
 addr=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=12345&lt;br /&gt;
 ; use GSM 7 Bit for default SMPP encoding&lt;br /&gt;
 default_encoding_type=gsm7bit&lt;br /&gt;
&lt;br /&gt;
=== Monitoring ===&lt;br /&gt;
&lt;br /&gt;
This section details comands through which the state of the USSD GW can be monitored.&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
* '''Congestion state monitoring'''&lt;br /&gt;
&lt;br /&gt;
The ''ussd_map'' module will generate an alarm when entering/exiting a congestion state. If SNMP support is enabled, this will generate a trap on SNMP.&lt;br /&gt;
The congestion status is also reported in the ''state'' entry in the result of the module status command.&lt;br /&gt;
&lt;br /&gt;
* '''Module status'''&lt;br /&gt;
&lt;br /&gt;
The module reports its status through the following command in the YATE telnet console:&lt;br /&gt;
&lt;br /&gt;
 status ussd_map&lt;br /&gt;
&lt;br /&gt;
The command will print the following information:&lt;br /&gt;
&lt;br /&gt;
 workers=count_of_dispatching_threads,messages=count_msg,dialogs=count_of_dialogs,state=normal,count=count_of_applications;format=Type | CurrentDlgs| MAPCreated | UssdCreated |DefaultRouted | MAPSent | MapRecv | USSDSent | USSDRecv | MAPAbort | USSDAbort | BuiltAbort | MAPTimeouts | USSDTimeouts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
* workers: current number of used dispatching threads from the maximum configured pool (e.g., 3/10 means 3 threads are used of a pool of 10)&lt;br /&gt;
* messages: count of messages waiting on the dispatching queue of the engine&lt;br /&gt;
* dialogs: total number of USSD sessions currently handled by all applications&lt;br /&gt;
* state of the engine: normal/congestion&lt;br /&gt;
* count: number of applications acting either as gsmSCF, either as HLR&lt;br /&gt;
* format: name of the application for which the following data is reported:&lt;br /&gt;
** Type: role of the application: SCF (communicates with real HLR), HLR (communicates with real gsmSCF)&lt;br /&gt;
** CurrentDlgs: number of current MAP dialogs handled by this application&lt;br /&gt;
** MAPCreated: number of sessions (dialogs) started by the MAP side&lt;br /&gt;
** UssdCreated: number of sessions (dialogs) started by the SMPP side&lt;br /&gt;
** DefaultRouted: number of dialogs for which failover took place&lt;br /&gt;
** MAPSent: number of MAP messages sent to gsmSCF/HLR. It doesn't count the ones sent via failover routing.&lt;br /&gt;
** MAPRecv: number of MAP messages received from gsmSCF/HLR&lt;br /&gt;
** USSDSent: number of sent ussd.execute/ussd.update/ussd.finalize messages towards the SMPP side.&lt;br /&gt;
** USSDRecv: number of received ussd.execute/ussd.update/usdd.notify messages from SMPP side.&lt;br /&gt;
** MAPAbort: number of dialog aborts generated by MAP side&lt;br /&gt;
** USSDAbort: number of dialog aborts generated by USSD side&lt;br /&gt;
** BuiltAbort: number of dialog aborts generated by the ussd_map module (e.g., not having a ussd.update message processed by anyone will cause ussd_map to generate session abort)&lt;br /&gt;
** MAPTimeouts: number of dialog timeouts generated by MAP side&lt;br /&gt;
** USSDTimeouts: number of timeouts reported by USSD side&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Module control commands'''&lt;br /&gt;
&lt;br /&gt;
The module offers the following control commands through the telnet console:&lt;br /&gt;
* ''control ussd_map appName print-msg [yes|no|verbose]'' : enable printing of received/sent map./ussd./messages.&lt;br /&gt;
* ''control ussd_map appName print-xml [yes|no|verbose]'' : enable printing of received/sent XMLs.&lt;br /&gt;
* ''control ussd_map appName export-xml-as [string|object|both]'' : change the way XML is set in the internal messages&lt;br /&gt;
* ''control ussd_map start_stats'' : begin gathering data for statistics&lt;br /&gt;
* ''control ussd_map stop_stats'' : stop gathering data for statistics&lt;br /&gt;
* ''control usdd_map stats'' : print statistic data per engine and each application in part. Data contains number of MAP messages handled per second, number of USSD messages handled per second, maximum number of current dialogs, number of timeouts and number of aborts.&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
The ysmpp module provides the following options for status command:&lt;br /&gt;
&lt;br /&gt;
'NOTE' the module_name can take the following values: smppserver or smppclient.&lt;br /&gt;
&lt;br /&gt;
* status module_name listeners&lt;br /&gt;
Prints the module listeners status in format: Address|Status|Reason.&lt;br /&gt;
&lt;br /&gt;
* status module_name sessions&lt;br /&gt;
Prints the status of the sessions in format: Id|State|BindMode|SystemId|IpAddress:Port|Congested|Incoming Queue|Outgoing Queue;&lt;br /&gt;
&lt;br /&gt;
** Id: The ID of the SMPP session. Can be used for routing.&lt;br /&gt;
** State: The state of the SMPP session.&lt;br /&gt;
** BindMode: The mode in which the session was bound. (Send/Recv/SendRecv)&lt;br /&gt;
** SystemId: The id with which the session has been authenticated. Can be used in routing.&lt;br /&gt;
** IpAddress:Port: The Ip Address and port of the remote end of the session.&lt;br /&gt;
** Congested: True if this session is in congestion state.&lt;br /&gt;
** Incoming Queue: The number of messages not processed in the incoming queue.&lt;br /&gt;
** Outgoing Queue: The number of messages not processed in the outgoing queue.&lt;br /&gt;
&lt;br /&gt;
*status module_name ussd overview&lt;br /&gt;
Prints the stats of the USSD sessions in format: Total|Active|Average Duration|Total Sent|Total Received|AverageTrafficPerSecond|EndedWithErrors|CongestionRefused&lt;br /&gt;
&lt;br /&gt;
** Total: the number of USSD sessions created since the starting of the program.&lt;br /&gt;
** Active: the number of USSD sessions currently active.&lt;br /&gt;
** Average Duration: average duration of a ussd session.&lt;br /&gt;
** Total Sent: total number of SMPP messages sent for USSD sessions.&lt;br /&gt;
** Total Received: total number of SMPP messages received for USSD sessions.&lt;br /&gt;
** AverageTrafficPerSecond: average traffic per second for USSD sessions.&lt;br /&gt;
** EndedWithErrors: the number of USSD sessions that ended with error.&lt;br /&gt;
** CongestionRefused: the number of USSD sessions refused because the server was overloaded.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* Mobile Application Part (MAP) specification: ETSI TE 129 002&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/USSD_GW</id>
		<title>USSD GW</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/USSD_GW"/>
				<updated>2014-02-06T16:06:27Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: /* ysmpp module */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an implementation an USSD gateway acting as a MAP Service Control Function (gsmSCF) and as a HLR at the same time. When communicating with a HLR or VLR, the YATE USSD GW acts as a gsmSCF. When communicating with a gsmSCF, the YATE USSDGW acts as a HLR.&lt;br /&gt;
The functionality of the USSD GW allows:&lt;br /&gt;
* redirecting of USSD requests arriving either from user side or gsmSCF side to a SMPP client where they can be altered.&lt;br /&gt;
* acting as a proxy for requests that need not be handled by SMPP clients or when the SMPP handling fails&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MAP USSD description ==&lt;br /&gt;
&lt;br /&gt;
In versions 2 and 3 of the GSM MAP protocol there are 3 operations used for USSD operations:&lt;br /&gt;
* processUnstructedSS-Request&lt;br /&gt;
* unstructuredSS-Request&lt;br /&gt;
* unstrusturedSS-Notify&lt;br /&gt;
&lt;br /&gt;
The are 2 scenarios for USSD operations:&lt;br /&gt;
* mobile initiated USSD requests&lt;br /&gt;
* network initiated USSD requests&lt;br /&gt;
&lt;br /&gt;
A TCAP dialog used by USSD is always terminated by the network side.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mobile initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobile initiated USSD requests are USSD requests started by the mobile subscriber.  &lt;br /&gt;
&lt;br /&gt;
A USSD request is started when receiving a TCAP BEGIN message containing the ''processUnstructedSS-Request'' Invoke operation. The request can be handled by the VLR, HLR or a gsmSCF. If the VLR does not handle the request, it will transmit it to the HLR. The HLR can either handle it itself or it can transmit it to a gsmSCF for handling.&lt;br /&gt;
&lt;br /&gt;
At this point, the network can either send a response to the request immediately or request additional information. In the first case, the handler of the request will send a TCAP End with ''processUnstructuredSS-Request'' ResultLast containing the result for the request. &lt;br /&gt;
In the latter case, the network will send a TCAP CONTINUE with ''unstructuredSS-Request'' Invoke operation. The response of the mobile subscriber to this request will be passed to the network in a TCAP CONTINUE with ''unstructuredSS-Request'' ResultLast component. At this point, if the network decides that it has enough information for providing the response to the user, it will send a TCAP END with ''processUnstructuredSS-Request'' ResultLast. Otherwise, it can request further information through another ''unstructuredSS-Request'' Invoke operation.&lt;br /&gt;
&lt;br /&gt;
=== Network initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD requests are USSD requests started by the network towards a certain subscriber.&lt;br /&gt;
&lt;br /&gt;
Requests made by the network can be of one of two types:&lt;br /&gt;
* user interaction requests&lt;br /&gt;
* network notification requests.&lt;br /&gt;
&lt;br /&gt;
User interaction requests are USSD requests that the network makes in which it requires some type of information back from the mobile subscriber. These are started by the network through a TCAP BEGIN containing an ''unstructuredSS-Request'' Invoke. The answer from the mobile subscriber will be received in a TCAP CONTINUE containing an ''unstructuredSS-Request'' ResultLast. If the network still wants to request further information, it will repeat the process. Otherwise, it will send a TCAP END to close the TCAP dialog.&lt;br /&gt;
&lt;br /&gt;
Network notification requests are USSD requests in which the network only sends a notification to the user. This is achieved by sending a TCAP BEGIN message containing a ''unstructuredSS-Notify'' Invoke. The mobile subscriber side will only respond with a TCAP CONTINUE containing an empty ''unstructuredSS-Notify'' in order to signal that the notification was received. The network will close the TCAP dialog through TCAP END.&lt;br /&gt;
&lt;br /&gt;
=== MAP USSD parameters ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following list describe common parameters used across all MAP USSD operations:&lt;br /&gt;
* ''destinationReference'': this parameter will contain either an MSISDN or an IMSI. In the case of mobile originated USSD request, this will identify the user which made the request. In the case of network initiated requests, it will identify the mobile user to be contacted for this request.&lt;br /&gt;
* ''ussd-String'': for ''processUnstructuredSS-Request'' Invoke it contains the dialed USSD code, for the result it would probably contain a message from the network detailing the result of the request. For ''unstructuredSS-Request'' Invoke it will contain a message asking for the user to choose some option and for the result it will contain the option chosen by the user. In the case of ''unstructuredSS-Notify'', this parameter will only be present in the Invoke.&lt;br /&gt;
* ''ussd-DataCodingScheme'': this is a parameter which specifies in which way the ''ussd-String'' parameter is encoded and it is present whenever ''ussd-String'' is present. E.g., this parameter would indicate if the ''ussd-String'' is encoded using GSM7bit encoding or UCS2.&lt;br /&gt;
&lt;br /&gt;
== SMPP USSD description ==&lt;br /&gt;
&lt;br /&gt;
'''TO DO'''&lt;br /&gt;
&lt;br /&gt;
== System description ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== System design ===&lt;br /&gt;
&lt;br /&gt;
In order to provide the specified functionality, the system makes use of the following YATE components:&lt;br /&gt;
* the SS7 stack  present in YATE &lt;br /&gt;
* the camel_map module which decodes/encodes MAP messages coming from the SS7 network to/from internal YATE messages containing MAP operations in XML form. Together with the SS7 layer this provides MAP connectivity with HLR/gsmSCF.&lt;br /&gt;
* the ussd_map module which takes internal MAP messsages decoded by the camel_map moduled and translates them to internal USSD messages. This module acts as gsmSCF towards a HLR and as a HLR towards a gsmSCF.&lt;br /&gt;
* the SMPP stack present in YATE (ysmpp module) which is able to catch internal USSD messages and transmit them over SMPP. It also translates SMPP messages into internal USSD messages.&lt;br /&gt;
* requests for new USSD sessions will go through routing to decide who should handle the request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following sections detail the behaviour of the system in the different USSD scenarios.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mobile originated USSD handling ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A user initiated USSD session is handled according to the following schema:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# HLR sends a ''processUnstructuredSS-Request (Invoke)'' for code *100#. camel_map decodes the ''ussd-String'' into ''ussd-Text=*100#''.&lt;br /&gt;
# the ussd_map module (gsmSCF side) processes the request received from the HLR and emits a ''call.route'' message with ''called=*100#''.&lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with the ''callto'' parameter set to the value returned from routing. ussd_map dispatches the ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will send  it to the target specified in ''callto'' parameter after the module prefix ''ysmppserver/''.&lt;br /&gt;
# The ysmpp module receives and process the received ''submit_sm'' message.&lt;br /&gt;
# The ysmpp module will send a ''call.route'' message with the ''called=*100#''.&lt;br /&gt;
# The ysmpp module emits a ''ussd.execute'' message with ''callto=retvalue from call.route'' message.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ussd.execute message and if it is the target of the message, meaning that ''callto'' starts with ''ussd_map/''. From that message it will build a map.message that it will send to the gsmSCF as a ''processUnstructuresSS-Request (Invoke)'' MAP message.&amp;lt;br&amp;gt;'''NOTE:''' From here on, the gsmSCF could handle the request in one of  two distinguished cases: one where the gsmSCF requires interaction with the mobile subscriber and one where the gsmSCF just needs to respond to the user request. The following steps detail the former case.&amp;lt;br&amp;gt;&lt;br /&gt;
# gsmSCF sends an ''unstructuredSS-Request (Invoke)'' to  request further information.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits an ''ussd.update'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.update'' message and confirms to the SMPP client that the message sent in step 5 was processed.&lt;br /&gt;
# The SMPP client should confirm the processing of the SMPP message sent in step 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver_sm'' message to the SMPP client with the menu received in ''ussd.update'' message.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message with the received menu.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message from SMPP client and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.update'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time in which the mobile subscribers responds can be quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway when receiving the response from the mobile subscriber.&lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 13.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 21.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 9 and 24 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''processUnstructuredSS-Request (ResultLast)''  for the initial user request.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''processUnstructuredSS-Request (ResultLast)'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 22 or 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 21 or 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 31.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 29.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''processUnstructuredSS-Request (ResultLast)''.&lt;br /&gt;
&lt;br /&gt;
==== Network initiated USSD Request ====&lt;br /&gt;
&lt;br /&gt;
A network initiated USSD session is handled as described in the following figure:&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
# gsmSCF sends''unstructuredSS-Request (Invoke)'' to USSD Gateway (HLR part) to present a menu for MSISDN 0015559191.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits a ''call.route'' message with called=0015559191. &lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with ''callto'' set to the route returned in the return value of the ''call.route'' message and dispatches an ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will then send to the target specified in the ''callto'&amp;quot; parameter after the ''ysmppserver'' module prefix.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message towards SMPP server.&lt;br /&gt;
# The SMPP server processes the received ''submit_sm'' message and dispatches a ''call.route'' message.&lt;br /&gt;
# After successfully dispatching of ''call.route'' message the SMPP server will dispatch a ''call.execute'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.execute'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time to receiving a response from the user after gsmSCF has requested user interaction could be possibly quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway &lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 4.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 13.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 1 and 16 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''TCAP END'' in order to finish the USSD session.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''TCAP END'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 13.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 22.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 21.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''END''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fallback/Proxy mode ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following images detail scenarios where the USSD GW is instructed to do failover.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when an HLR sends ''processUnstructuredSS-Request (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:''' &lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message. &lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD session fallback.&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when a gsmSCF sends a &amp;quot;unstructuredSS-Request/unstructuredSS-Notify (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:'''&lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message.&lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The SMPP USSD gateway will also be bypassed when the ''ussd_map'' module is configured to do failover for all requests.&lt;br /&gt;
&lt;br /&gt;
Any type of SMPP error received either in the result for the ''ussd.execute'' or in the first message back from SMPP that does not have a mapping on MAP will lead to the ''ussd_map'' module doing failover. Errors that would generate a failover are errors like timeout, session ended abnormally, unknown errors, congestion errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once ''ussd_map'' decides that failover should be done, it will use the original received message  from the HLR (MO case)/gsmSCF (MT case) and it will only alter the called address to be the one of the gsmSCF/HLR set for the failover.. The calling address will remain the one received from HLR/gsmSCF, the idea being that for the first message we want to pretend that we are the original gsmSCF/HLR. When the receiving end of this message will want to respond, it will use the calling address from the message. Seeing that the ''ussd_map'' module set it to the original calller's address, further messages exchanged in that dialog between HLR and gsmSCF will not pass through USSD GW again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Internal message API ====&lt;br /&gt;
&lt;br /&gt;
This section documents the YATE messages used internally by the USSD GW.&lt;br /&gt;
&lt;br /&gt;
===== call.route =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used by ussd_map and ysmpp module to determine a destination where a new USSD session should be sent for further processing.&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module when receiving a request for a new USSD session on MAP for ''ussd_map'' or on SMPP for ''ysmpp''.&lt;br /&gt;
''ussd_map'' will only send this message if default routing is not enabled from configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
* module&lt;br /&gt;
** type: string &lt;br /&gt;
** Name of the module which requested routing&lt;br /&gt;
* application&lt;br /&gt;
** type: string&lt;br /&gt;
** Name of the ussd_map application which sent this routing request&lt;br /&gt;
* route_type&lt;br /&gt;
** type: keyword, value: ussd &lt;br /&gt;
** Specifies routing type, in this case it'll be USSD routing&lt;br /&gt;
* smpp_session_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
* smpp_system_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* if the message was processed, the return value of the message indicates the destination of the subsequent ''ussd.execute'' message.&lt;br /&gt;
* if the message was not processed or it returned with error (signaled by the return value being either &amp;quot;-&amp;quot; or &amp;quot;error&amp;quot;)&lt;br /&gt;
** ''ussd_map'' will do failover&lt;br /&gt;
** ysmpp will close the SMPP session, indicating an error either set by the call.route or either set to the default unknown error indication.&lt;br /&gt;
&lt;br /&gt;
===== ussd.execute =====&lt;br /&gt;
&lt;br /&gt;
This message is used to begin a new USSD session:&lt;br /&gt;
* on SMPP, if the message is directed to the ''ysmpp'' module&lt;br /&gt;
* on MAP if the message is directed to the ''ussd_map'' module&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module after successful routing stage. In case of the ''ussd_map'' module, this is message is sent if the routing stage did not indicate failover necessity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* callto:  &lt;br /&gt;
** type : string&lt;br /&gt;
** It specifies the target module to process the message. The string should start with  'ysmppserver/' for the  ''ysmpp&amp;quot; module and with ''ussd_map/'' for the ''ussd_map'' module.&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier assigned for this USSD session by the entity that processed this message.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error returned if the message was not processed.&lt;br /&gt;
&lt;br /&gt;
Processing of this message will return failure:&lt;br /&gt;
* if the message will not be processed&lt;br /&gt;
* if the 'id' parameter is missing.&lt;br /&gt;
* in case of processing error &lt;br /&gt;
* in case of congestion&lt;br /&gt;
&lt;br /&gt;
===== ussd.update =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used for transmitting USSD messages during a USSD session. This type of message will be used after the initial stage of creating the session through ''ussd.execute'' has succeeded.&lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP CONTINUE message &lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will be refused if it is received after a ''ussd.finalize'' message.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a values not allowed in the context of the USSD session (e.g., sending a ''processUnstructuredSS-Request inside a ''ussd.update'' message)&lt;br /&gt;
&lt;br /&gt;
===== ussd.finalize =====&lt;br /&gt;
&lt;br /&gt;
This message is used to signal the termination of the USSD session. Successful processing of this message means that the USSD session was terminated and is no longer available. &lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP END/ABORT message depending upon the parameters received. A message containing an error that does not map to a MAP error will generate a TCAP ABORT.&lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client, a message that will usually contain a last message indication.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by 'peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a value not allowed in the context of the USSD session&lt;br /&gt;
&lt;br /&gt;
===== Keyword values =====&lt;br /&gt;
&lt;br /&gt;
This section details acceptable values for parameters listed as having type ''keyword''.&lt;br /&gt;
&lt;br /&gt;
* '''hlr.nature/vlr.nature/gsmscf.nature/destination_reference.nature'''&lt;br /&gt;
** unknown&lt;br /&gt;
** international&lt;br /&gt;
** national&lt;br /&gt;
** network-specific&lt;br /&gt;
** subscriber&lt;br /&gt;
** abbreviated&lt;br /&gt;
&lt;br /&gt;
* '''hlr.plan/vlr.plan/gsmscf.plan/destination_reference.plan'''&lt;br /&gt;
** unknown&lt;br /&gt;
** isdn&lt;br /&gt;
** data&lt;br /&gt;
** telex&lt;br /&gt;
** land-mobile&lt;br /&gt;
** national&lt;br /&gt;
** private&lt;br /&gt;
&lt;br /&gt;
* '''operation_type'''&lt;br /&gt;
** pssd: mapping of MAP v1 USSD operation ''processUnstructuredSS-Data'' and of SMPP operation ''PSSD''. &lt;br /&gt;
** pssr: mapping of MAP v2 USSD operation ''processUnstructuredSS-Request'' and of SMPP operation ''PSSR''.&lt;br /&gt;
** ussr: mapping of MAP v2 USSD operation ''unstructuredSS-Request'' and of SMPP operation ''USSR&amp;quot;.&lt;br /&gt;
** ussn: mapping of MAP v2 USSD operation ''unstructuredSS-Notify'' and of SMPP operation ''USSN''.&lt;br /&gt;
&lt;br /&gt;
* '''error'''&lt;br /&gt;
** invalid_logic:  error reported when required processing does not follow USSD rules (e.g., MT request starting with ''processUnstructuredSS-Requests'')&lt;br /&gt;
** system_failure: error mapping for MAP error ''systemFailure''.&lt;br /&gt;
** data_missing: error mapping for  MAP error ''dataMissing''.&lt;br /&gt;
** unexpected_data: error mapping for MAP error ''unexpectedDataValue''.&lt;br /&gt;
** unknown_alphabet: error mapping for MAP error ''unknownAlphabet''.&lt;br /&gt;
** absent_subscriber: error mapping for MAP error ''absentSubscriber''.&lt;br /&gt;
** illegal_subscriber: error mapping for MAP error ''illegalSubscriber''.&lt;br /&gt;
** illegal_equipment: error mapping for MAP error ''illegalEquipment''.&lt;br /&gt;
** ussd_busy: error mapping for MAP error ''ussd-Busy''.&lt;br /&gt;
** call_barred: error mapping for MAP error ''callBarred''.&lt;br /&gt;
** network_failure: error signaling message transmission failure due to  connectivity issues either on the SS7 side or SMPP side.&lt;br /&gt;
** timeout_expired: error signaling a  request timeout occurrence.&lt;br /&gt;
** ussd_sess_end_abnormally: error signaling USSD session termination due to an unknown cause. Mapping for this error implies a TCAP Abort either being generated of received. &lt;br /&gt;
** unknown_error: error specified when there is no available mapping for an errror from SMPP to MAP or vice versa.&lt;br /&gt;
** throttling_error: error signaling that a message failed to be processed due to processing side being in congestion state.&lt;br /&gt;
** protocol_error: SMPP generic error. This error is put whenever there is a SMPP specific error that cannot be mapped into one of the other errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== SMPP custom parameters ====&lt;br /&gt;
&lt;br /&gt;
* 0x1502 =&amp;gt; IMSI;&lt;br /&gt;
* 0x1503 =&amp;gt; VLR Type of Number;&lt;br /&gt;
* 0x1504 =&amp;gt; VLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1505 =&amp;gt; VLR address;&lt;br /&gt;
* 0x1506 =&amp;gt; GSM SCF Type of Number;&lt;br /&gt;
* 0x1507 =&amp;gt; GSM SCF Numbering Plan Indicator;&lt;br /&gt;
* 0x1508 =&amp;gt; GSM_SCF address;&lt;br /&gt;
* 0x1509 =&amp;gt; Destination Reference Type of Number;&lt;br /&gt;
* 0x150a =&amp;gt; Destination Reference Numbering Plan Indicator;&lt;br /&gt;
* 0x150b =&amp;gt; Destination Reference;&lt;br /&gt;
* 0x150c =&amp;gt; MSISDN&lt;br /&gt;
* 0x150d =&amp;gt; Alerting Pattern&lt;br /&gt;
* 0x1800 =&amp;gt; HLR Type of Number;&lt;br /&gt;
* 0x1801 =&amp;gt; HLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1802 =&amp;gt; HLR address.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
==== ysigchan module ====&lt;br /&gt;
&lt;br /&gt;
In order to have MAP connectivity, TCAP instances must be configured in ''ysigchan.conf'': &lt;br /&gt;
&lt;br /&gt;
 ; Example of a SS7 Transaction Capabilities Application Part&lt;br /&gt;
 ; This component is created when encountering a section of this kind&lt;br /&gt;
 ;[ss7tcap]&lt;br /&gt;
 ; type: keyword: identifies the component as a SS7 Transfer Capabilities Application Part&lt;br /&gt;
 ; type = ss7-tcap-ansi for ANSI TCAP&lt;br /&gt;
 ; type = ss7-tcap-itu for ITU TCAP&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; local_SSN: local SubSystem Number. Mandatory&lt;br /&gt;
 ;local_SSN=&lt;br /&gt;
 &lt;br /&gt;
 ; default_remote_SSN: remote SubSystem Number to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_SSN=&lt;br /&gt;
  &lt;br /&gt;
 ; default_remote_pointcode: remote Point Code to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_pointcode=&lt;br /&gt;
 &lt;br /&gt;
 ; pointcodetype: remote Point Code type. See above documentation for available types&lt;br /&gt;
 ;pointcodetype=&lt;br /&gt;
 &lt;br /&gt;
 ; sccp: Name of the SCCP component to create and be used by this TCAP&lt;br /&gt;
 ; A section with the name given here must exist in order to configure the SCCP level&lt;br /&gt;
 ;sccp=&lt;br /&gt;
 &lt;br /&gt;
 ; default_hopcounter: HopCounter provided to SCCP if the application does not provide one&lt;br /&gt;
 ; Values range 1-15, 0 or boolean false disables, boolean true sets to 15&lt;br /&gt;
 ; A non-zero value will force using XUDT or LUDT instead of UDT messages&lt;br /&gt;
 ;default_hopcounter=false&lt;br /&gt;
 &lt;br /&gt;
 ; transact_timeout: Time in seconds to timeout a TCAP transaction after no more activity was registered on it&lt;br /&gt;
 ; NOTE: Values below 15 seconds will be ignored and the timer will assume the default value.&lt;br /&gt;
 ; Defaults to 300 seconds&lt;br /&gt;
 ;transact_timeout=300&lt;br /&gt;
 &lt;br /&gt;
 ; max_timeout_checks: integer: Maximum number of timeout checks done on a transaction without starting the transaction&lt;br /&gt;
 ;  timer before forcefully starting the transaction timer&lt;br /&gt;
 ; Defaults to 10&lt;br /&gt;
 ;max_timeout_checks=10 &lt;br /&gt;
 &lt;br /&gt;
 ; timeout_check: Time interval in milliseconds to check for timeouts.&lt;br /&gt;
 ; Default to 100 ms&lt;br /&gt;
 ;timeout_check=100 &lt;br /&gt;
 &lt;br /&gt;
 ; floodevents: int: How many queued incoming TCAP messages trigger a congestion warning and the drop mechanism&lt;br /&gt;
 ;  for Unidirectional/Begin/QueryWithPermission/QueryWithoutPermission messages.&lt;br /&gt;
 ;  Exit from congestion will take place when there are less the floodevents/4 messages in the queue&lt;br /&gt;
 ; NOTE! Setting this parameter to 0 will disable the congestion warning and protection. Setting it to one will &lt;br /&gt;
 ;  be overriden and floodevents will be set to 2.&lt;br /&gt;
 ;floodevents=1000&lt;br /&gt;
 &lt;br /&gt;
 ;print-messages: Boolean to enable/disable printing of decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ;extended-debug: Boolean to enable/disable printing of the step-by-step decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload. print-messages must be true.&lt;br /&gt;
 ;extended-debug=false&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for keeping the list of current transactions&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
 [tcap-scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=147                                                                                                                                &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                     &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap-hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=7                                                                                                                                  &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Further configuration for SS7 connectivity is required (SCCP, MTP3, etc.).&lt;br /&gt;
&lt;br /&gt;
==== camel_map module ====&lt;br /&gt;
&lt;br /&gt;
Configuring of tracking IDs is done in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ;track_id: string: Shared engine variable name used to obtain a unique tracking ID for TCAP transactions&lt;br /&gt;
 ; If not set, the module will not set a tracking ID for the TCAP transaction&lt;br /&gt;
 ;track_id=&lt;br /&gt;
 &lt;br /&gt;
 ;track_id_base: string: Optional string with which to prefix the tracking ID&lt;br /&gt;
 ; This setting has no effect if track_id is not set&lt;br /&gt;
 ;track_id_base=&lt;br /&gt;
&lt;br /&gt;
In order to allow communication over MAP through SS7, sections configurating application should exist for each role of the ussd_map module (gsmSCF/HLR). A ''camel_map.conf'' section configuring an application looks like this:&lt;br /&gt;
 &lt;br /&gt;
 ;[local appName]&lt;br /&gt;
 ; This section configures a local application which transmits the XML messages as internal Yate messages&lt;br /&gt;
 &lt;br /&gt;
 ; translator: string: name of translator to be used by this application.&lt;br /&gt;
 ; Must be one one the [tcap ...] sections configured in the camel_map.conf file.&lt;br /&gt;
 ;translator=&lt;br /&gt;
  &lt;br /&gt;
 ; capabilities: string: List of capabilities separated by commas which this application supports&lt;br /&gt;
 ;capabilities=&lt;br /&gt;
  &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into a Yate message&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - string: pass the XML as a string&lt;br /&gt;
 ;  - object: pass the XML as an object&lt;br /&gt;
 ;  - both: pass the XML as a string and object&lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; enable: bool: Enable this application&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
&lt;br /&gt;
The translator setting refers to a section of the type defined below which configures atachement to a TCAP instance&lt;br /&gt;
&lt;br /&gt;
 ;[tcap map]&lt;br /&gt;
 ; This section configures a TCAP User MAP/CAMEL protocol translator&lt;br /&gt;
 &lt;br /&gt;
 ; enable: bool: Enable this translator&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of TCAP User &lt;br /&gt;
 ; Allowed values are MAP or CAMEL&lt;br /&gt;
 ;type=MAP&lt;br /&gt;
 &lt;br /&gt;
 ; host: IP address: Address on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ;host=127.0.0.1 &lt;br /&gt;
 &lt;br /&gt;
 ; port: integer: Port on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ; Note: setting port to 0 will disable the listener, so it will not accept TCP applications&lt;br /&gt;
 ;port=5555&lt;br /&gt;
 &lt;br /&gt;
 ; tcap: string: Name of TCAP to which this TCAP user should attach itself to for the SS7 communication&lt;br /&gt;
 ;tcap=&lt;br /&gt;
 &lt;br /&gt;
 ; add-encoding: bool: Always add encoding attribute to XML elements for decoded parameters&lt;br /&gt;
 ;add-encoding=default from [general]&lt;br /&gt;
 &lt;br /&gt;
 ; add-timestamp: bool: Add to XML timestamps used for estimating application latency&lt;br /&gt;
 ;add-timestamp=default from [general] &lt;br /&gt;
 &lt;br /&gt;
 ; print-messages: bool: Debug option to print TCAP and XML messages. This option is applicable on reload.&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-string: string: Specifies what the ussd-String parameter will contain as data&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - octets: ussd-String will contain the octets as they were received&lt;br /&gt;
 ;  - text: ussd-String will contain the GSM7Bit decoded text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-string=text&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-decode: string: Specifies what ussd-String parameters should be decoded into text&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - none: ussd-String parameters will never be decoded into text&lt;br /&gt;
 ;  - first: ussd-String in a TCAP Begin message will be decoded into text&lt;br /&gt;
 ;  - all: all ussd-String parameters will be decoded into text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-decode=all&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for mapping of TCAP transactions to applications&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For load sharing (especially in cases of high loads), you can configure multiple applications using the same translator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 applications acting as a gsmSCF, each one attached to the TCAP instance with gsmSCF SSN, and 2 applications as HLR, each one attached to the TCAP instance with HLR SSN 6:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 track_id=ussdgw&lt;br /&gt;
 track_id_base=ussdgw/&lt;br /&gt;
 &lt;br /&gt;
 [tcap scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-scf                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false                                                                                                                           &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-hlr                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false   &lt;br /&gt;
 &lt;br /&gt;
 [local ussdscf1]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all                                                                                                                            &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [local ussdscf2]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all               &lt;br /&gt;
 &lt;br /&gt;
 [local ussdhlr1]&lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all                                                                                                                            &lt;br /&gt;
 &lt;br /&gt;
 [local ussdhlr2]                                                                                                                             &lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
The module is configured through ''ussd_map.conf''. The configuration file sets timeout parameters and processing threads parameters in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList for keeping dialogs&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
 &lt;br /&gt;
 ; component_ttl: integer: Component time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; Defaults to 600000 (10 minutes)&lt;br /&gt;
 ;component_ttl=600000&lt;br /&gt;
 &lt;br /&gt;
 ; dialog_idle_ttl: integer: Dialog idle (nothing sent/received) time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; It can be set to 0 to keep it alive until the remote party terminates the dialog&lt;br /&gt;
 ; Defaults to 86400000 (1 day)&lt;br /&gt;
 ;dialog_idle_ttl=86400000&lt;br /&gt;
&lt;br /&gt;
 ; dialog_ended_ttl: integer: Ended dialog time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000.&lt;br /&gt;
 ; It can be set to 0 to remove the dialog after termination&lt;br /&gt;
 ; Defaults to 0&lt;br /&gt;
 ;dialog_ended_ttl=0&lt;br /&gt;
 &lt;br /&gt;
 ; dispatcher_maxthreads: integer: Maximum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ; NOTE: if the value is set to 0, the module will enqueue the messages into YATE's engine.&lt;br /&gt;
 ;dispatcher_maxthreads=0&lt;br /&gt;
&lt;br /&gt;
 ; dispatcher_minthreads: integer: Minimum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ;dispatcher_minthreads=1&lt;br /&gt;
&lt;br /&gt;
 ;dispatcher_priority: string: Default priority of message dispatch threads&lt;br /&gt;
 ;dispatcher_priority=normal&lt;br /&gt;
&lt;br /&gt;
 ; floodevents: integer: Threshold for signaling congestion when the number of messages waiting to be dispatched exceeds it.&lt;br /&gt;
 ; When entering congestion, all new MAP dialogs and USSD sessions will be refused.&lt;br /&gt;
 ; 0 disables the mechanism&lt;br /&gt;
 ;floodevents=0&lt;br /&gt;
&lt;br /&gt;
 ; congestion_exit_factor: double: Factor used to calculate the exit congestion threshold&lt;br /&gt;
 ; NOTE: if the factor results in a exit congestion threshold of 0 or greater than floodevents, &lt;br /&gt;
 ; the setting will be overriden and the exit congestion threshold will be set to 1.&lt;br /&gt;
 ;congestion_exit_factor=0.5&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Timeout settings should be correlated with timeout settings in TCAP and SMPP, each having its own timeout mechanism.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gateway applications which do the MAP &amp;lt;-&amp;gt; USSD translation are configured through section like the one below:&lt;br /&gt;
&lt;br /&gt;
 [appName]&lt;br /&gt;
 ; section name is the name of the camel_map application, it must correspond to a [local appName] section in camel_map &lt;br /&gt;
&lt;br /&gt;
 ; enable: boolean: Enable this application&lt;br /&gt;
 ; Defaults to yes&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of MAP &amp;lt;-&amp;gt; USSD translator: &lt;br /&gt;
 ;  - SCF means that is the part that receives new dialogs from the HLR (user initiated USSD)&lt;br /&gt;
 ;  - HLR is the part that receives new dialogs from gsmSCF (network initiated USSD)&lt;br /&gt;
 ; This setting cannot be changed on reload.&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into &lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; print_msg: boolean: Print sent/received messages to output&lt;br /&gt;
 ;print_msg=no&lt;br /&gt;
  &lt;br /&gt;
 ; print_xml: boolean: Print sent/received XML data to output&lt;br /&gt;
 ;print_xml=no&lt;br /&gt;
 &lt;br /&gt;
 ; local_addr. : prefix: Parameters prefixed with this set the local SCCP address of this application &lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; local_addr.CallingPartyAddress.route=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.ssn=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.pointcode=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.nature=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.plan=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.translation=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.encoding= &lt;br /&gt;
 &lt;br /&gt;
 ; default_routing: bool : Do routing to default address for all messages&lt;br /&gt;
 ; default_routing=no&lt;br /&gt;
 &lt;br /&gt;
 ; default_addr. : prefix: parameters prefixed with this will be used as the default SCCP called address&lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; default_addr.application=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.route=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.ssn=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.pointcode=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.nature=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.translation=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.encoding=&lt;br /&gt;
 &lt;br /&gt;
 ; hlr_ssn: integer: The SSN expected in the calling address from a HLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;hlr_ssn=6&lt;br /&gt;
 &lt;br /&gt;
 ; vlr_ssn: integer: The SSN expected in the calling address from a VLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;vlr_ssn=7&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each section should have its own equivalent in ''camel_map.conf''.&lt;br /&gt;
In the USSD GW scenario, at least tho applications are needed, one acting as SCF, one as HLR. For load sharing multiple gsmSCF and HLR applications can be configured (see the configuration example below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 gsmSCF applications and 2 HLR applications, each one corresponding with a application section in the ''camel_map.conf'' example:&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 component_ttl=600000                                                                                                                         &lt;br /&gt;
 dialog_ended_ttl=0                                                                                                                           &lt;br /&gt;
 dispatcher_maxthreads=10                                                                                                                     &lt;br /&gt;
 dispatcher_minthreads=5                                                                                                                      &lt;br /&gt;
 ;dispatcher_priority=normal                                                                                                                  &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [ussdscf1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
&lt;br /&gt;
 [ussdscf2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
 &lt;br /&gt;
 [ussdhlr1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                         &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd                                                                                              &lt;br /&gt;
                                                   &lt;br /&gt;
 [ussdhlr2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
TODO - configuration explanations&lt;br /&gt;
'''NOTE''' The module encodes text to ASCII for default encoding.&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example''''&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
 server=smpp-server                                                                                                                           &lt;br /&gt;
 track_id=ussdgw                                                                                                                              &lt;br /&gt;
 track_id_base=ussdgw/                                                                                                                        &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [smpp-server]                                                                                                                                &lt;br /&gt;
 enable=true                                                                                                                                  &lt;br /&gt;
 session_responseinterval=600000                                                                                                              &lt;br /&gt;
 sessionset_process_max=1                                                                                                                     &lt;br /&gt;
 codec_warndefaults=false                                                                                                                     &lt;br /&gt;
 print-messages=no                                                                                                                            &lt;br /&gt;
                                                                                                                                            &lt;br /&gt;
 [listenerserver server]                                                                                                                      &lt;br /&gt;
 ;enable=yes                                                                                                                                  &lt;br /&gt;
 addr=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=12345&lt;br /&gt;
&lt;br /&gt;
=== Monitoring ===&lt;br /&gt;
&lt;br /&gt;
This section details comands through which the state of the USSD GW can be monitored.&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
* '''Congestion state monitoring'''&lt;br /&gt;
&lt;br /&gt;
The ''ussd_map'' module will generate an alarm when entering/exiting a congestion state. If SNMP support is enabled, this will generate a trap on SNMP.&lt;br /&gt;
The congestion status is also reported in the ''state'' entry in the result of the module status command.&lt;br /&gt;
&lt;br /&gt;
* '''Module status'''&lt;br /&gt;
&lt;br /&gt;
The module reports its status through the following command in the YATE telnet console:&lt;br /&gt;
&lt;br /&gt;
 status ussd_map&lt;br /&gt;
&lt;br /&gt;
The command will print the following information:&lt;br /&gt;
&lt;br /&gt;
 workers=count_of_dispatching_threads,messages=count_msg,dialogs=count_of_dialogs,state=normal,count=count_of_applications;format=Type | CurrentDlgs| MAPCreated | UssdCreated |DefaultRouted | MAPSent | MapRecv | USSDSent | USSDRecv | MAPAbort | USSDAbort | BuiltAbort | MAPTimeouts | USSDTimeouts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
* workers: current number of used dispatching threads from the maximum configured pool (e.g., 3/10 means 3 threads are used of a pool of 10)&lt;br /&gt;
* messages: count of messages waiting on the dispatching queue of the engine&lt;br /&gt;
* dialogs: total number of USSD sessions currently handled by all applications&lt;br /&gt;
* state of the engine: normal/congestion&lt;br /&gt;
* count: number of applications acting either as gsmSCF, either as HLR&lt;br /&gt;
* format: name of the application for which the following data is reported:&lt;br /&gt;
** Type: role of the application: SCF (communicates with real HLR), HLR (communicates with real gsmSCF)&lt;br /&gt;
** CurrentDlgs: number of current MAP dialogs handled by this application&lt;br /&gt;
** MAPCreated: number of sessions (dialogs) started by the MAP side&lt;br /&gt;
** UssdCreated: number of sessions (dialogs) started by the SMPP side&lt;br /&gt;
** DefaultRouted: number of dialogs for which failover took place&lt;br /&gt;
** MAPSent: number of MAP messages sent to gsmSCF/HLR. It doesn't count the ones sent via failover routing.&lt;br /&gt;
** MAPRecv: number of MAP messages received from gsmSCF/HLR&lt;br /&gt;
** USSDSent: number of sent ussd.execute/ussd.update/ussd.finalize messages towards the SMPP side.&lt;br /&gt;
** USSDRecv: number of received ussd.execute/ussd.update/usdd.notify messages from SMPP side.&lt;br /&gt;
** MAPAbort: number of dialog aborts generated by MAP side&lt;br /&gt;
** USSDAbort: number of dialog aborts generated by USSD side&lt;br /&gt;
** BuiltAbort: number of dialog aborts generated by the ussd_map module (e.g., not having a ussd.update message processed by anyone will cause ussd_map to generate session abort)&lt;br /&gt;
** MAPTimeouts: number of dialog timeouts generated by MAP side&lt;br /&gt;
** USSDTimeouts: number of timeouts reported by USSD side&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Module control commands'''&lt;br /&gt;
&lt;br /&gt;
The module offers the following control commands through the telnet console:&lt;br /&gt;
* ''control ussd_map appName print-msg [yes|no|verbose]'' : enable printing of received/sent map./ussd./messages.&lt;br /&gt;
* ''control ussd_map appName print-xml [yes|no|verbose]'' : enable printing of received/sent XMLs.&lt;br /&gt;
* ''control ussd_map appName export-xml-as [string|object|both]'' : change the way XML is set in the internal messages&lt;br /&gt;
* ''control ussd_map start_stats'' : begin gathering data for statistics&lt;br /&gt;
* ''control ussd_map stop_stats'' : stop gathering data for statistics&lt;br /&gt;
* ''control usdd_map stats'' : print statistic data per engine and each application in part. Data contains number of MAP messages handled per second, number of USSD messages handled per second, maximum number of current dialogs, number of timeouts and number of aborts.&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
The ysmpp module provides the following options for status command:&lt;br /&gt;
&lt;br /&gt;
'NOTE' the module_name can take the following values: smppserver or smppclient.&lt;br /&gt;
&lt;br /&gt;
* status module_name listeners&lt;br /&gt;
Prints the module listeners status in format: Address|Status|Reason.&lt;br /&gt;
&lt;br /&gt;
* status module_name sessions&lt;br /&gt;
Prints the status of the sessions in format: Id|State|BindMode|SystemId|IpAddress:Port|Congested|Incoming Queue|Outgoing Queue;&lt;br /&gt;
&lt;br /&gt;
** Id: The ID of the SMPP session. Can be used for routing.&lt;br /&gt;
** State: The state of the SMPP session.&lt;br /&gt;
** BindMode: The mode in which the session was bound. (Send/Recv/SendRecv)&lt;br /&gt;
** SystemId: The id with which the session has been authenticated. Can be used in routing.&lt;br /&gt;
** IpAddress:Port: The Ip Address and port of the remote end of the session.&lt;br /&gt;
** Congested: True if this session is in congestion state.&lt;br /&gt;
** Incoming Queue: The number of messages not processed in the incoming queue.&lt;br /&gt;
** Outgoing Queue: The number of messages not processed in the outgoing queue.&lt;br /&gt;
&lt;br /&gt;
*status module_name ussd overview&lt;br /&gt;
Prints the stats of the USSD sessions in format: Total|Active|Average Duration|Total Sent|Total Received|AverageTrafficPerSecond|EndedWithErrors|CongestionRefused&lt;br /&gt;
&lt;br /&gt;
** Total: the number of USSD sessions created since the starting of the program.&lt;br /&gt;
** Active: the number of USSD sessions currently active.&lt;br /&gt;
** Average Duration: average duration of a ussd session.&lt;br /&gt;
** Total Sent: total number of SMPP messages sent for USSD sessions.&lt;br /&gt;
** Total Received: total number of SMPP messages received for USSD sessions.&lt;br /&gt;
** AverageTrafficPerSecond: average traffic per second for USSD sessions.&lt;br /&gt;
** EndedWithErrors: the number of USSD sessions that ended with error.&lt;br /&gt;
** CongestionRefused: the number of USSD sessions refused because the server was overloaded.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* Mobile Application Part (MAP) specification: ETSI TE 129 002&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/USSD_GW</id>
		<title>USSD GW</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/USSD_GW"/>
				<updated>2014-02-06T15:55:26Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: /* ussd_map module */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an implementation an USSD gateway acting as a MAP Service Control Function (gsmSCF) and as a HLR at the same time. When communicating with a HLR or VLR, the YATE USSD GW acts as a gsmSCF. When communicating with a gsmSCF, the YATE USSDGW acts as a HLR.&lt;br /&gt;
The functionality of the USSD GW allows:&lt;br /&gt;
* redirecting of USSD requests arriving either from user side or gsmSCF side to a SMPP client where they can be altered.&lt;br /&gt;
* acting as a proxy for requests that need not be handled by SMPP clients or when the SMPP handling fails&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MAP USSD description ==&lt;br /&gt;
&lt;br /&gt;
In versions 2 and 3 of the GSM MAP protocol there are 3 operations used for USSD operations:&lt;br /&gt;
* processUnstructedSS-Request&lt;br /&gt;
* unstructuredSS-Request&lt;br /&gt;
* unstrusturedSS-Notify&lt;br /&gt;
&lt;br /&gt;
The are 2 scenarios for USSD operations:&lt;br /&gt;
* mobile initiated USSD requests&lt;br /&gt;
* network initiated USSD requests&lt;br /&gt;
&lt;br /&gt;
A TCAP dialog used by USSD is always terminated by the network side.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mobile initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobile initiated USSD requests are USSD requests started by the mobile subscriber.  &lt;br /&gt;
&lt;br /&gt;
A USSD request is started when receiving a TCAP BEGIN message containing the ''processUnstructedSS-Request'' Invoke operation. The request can be handled by the VLR, HLR or a gsmSCF. If the VLR does not handle the request, it will transmit it to the HLR. The HLR can either handle it itself or it can transmit it to a gsmSCF for handling.&lt;br /&gt;
&lt;br /&gt;
At this point, the network can either send a response to the request immediately or request additional information. In the first case, the handler of the request will send a TCAP End with ''processUnstructuredSS-Request'' ResultLast containing the result for the request. &lt;br /&gt;
In the latter case, the network will send a TCAP CONTINUE with ''unstructuredSS-Request'' Invoke operation. The response of the mobile subscriber to this request will be passed to the network in a TCAP CONTINUE with ''unstructuredSS-Request'' ResultLast component. At this point, if the network decides that it has enough information for providing the response to the user, it will send a TCAP END with ''processUnstructuredSS-Request'' ResultLast. Otherwise, it can request further information through another ''unstructuredSS-Request'' Invoke operation.&lt;br /&gt;
&lt;br /&gt;
=== Network initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD requests are USSD requests started by the network towards a certain subscriber.&lt;br /&gt;
&lt;br /&gt;
Requests made by the network can be of one of two types:&lt;br /&gt;
* user interaction requests&lt;br /&gt;
* network notification requests.&lt;br /&gt;
&lt;br /&gt;
User interaction requests are USSD requests that the network makes in which it requires some type of information back from the mobile subscriber. These are started by the network through a TCAP BEGIN containing an ''unstructuredSS-Request'' Invoke. The answer from the mobile subscriber will be received in a TCAP CONTINUE containing an ''unstructuredSS-Request'' ResultLast. If the network still wants to request further information, it will repeat the process. Otherwise, it will send a TCAP END to close the TCAP dialog.&lt;br /&gt;
&lt;br /&gt;
Network notification requests are USSD requests in which the network only sends a notification to the user. This is achieved by sending a TCAP BEGIN message containing a ''unstructuredSS-Notify'' Invoke. The mobile subscriber side will only respond with a TCAP CONTINUE containing an empty ''unstructuredSS-Notify'' in order to signal that the notification was received. The network will close the TCAP dialog through TCAP END.&lt;br /&gt;
&lt;br /&gt;
=== MAP USSD parameters ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following list describe common parameters used across all MAP USSD operations:&lt;br /&gt;
* ''destinationReference'': this parameter will contain either an MSISDN or an IMSI. In the case of mobile originated USSD request, this will identify the user which made the request. In the case of network initiated requests, it will identify the mobile user to be contacted for this request.&lt;br /&gt;
* ''ussd-String'': for ''processUnstructuredSS-Request'' Invoke it contains the dialed USSD code, for the result it would probably contain a message from the network detailing the result of the request. For ''unstructuredSS-Request'' Invoke it will contain a message asking for the user to choose some option and for the result it will contain the option chosen by the user. In the case of ''unstructuredSS-Notify'', this parameter will only be present in the Invoke.&lt;br /&gt;
* ''ussd-DataCodingScheme'': this is a parameter which specifies in which way the ''ussd-String'' parameter is encoded and it is present whenever ''ussd-String'' is present. E.g., this parameter would indicate if the ''ussd-String'' is encoded using GSM7bit encoding or UCS2.&lt;br /&gt;
&lt;br /&gt;
== SMPP USSD description ==&lt;br /&gt;
&lt;br /&gt;
'''TO DO'''&lt;br /&gt;
&lt;br /&gt;
== System description ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== System design ===&lt;br /&gt;
&lt;br /&gt;
In order to provide the specified functionality, the system makes use of the following YATE components:&lt;br /&gt;
* the SS7 stack  present in YATE &lt;br /&gt;
* the camel_map module which decodes/encodes MAP messages coming from the SS7 network to/from internal YATE messages containing MAP operations in XML form. Together with the SS7 layer this provides MAP connectivity with HLR/gsmSCF.&lt;br /&gt;
* the ussd_map module which takes internal MAP messsages decoded by the camel_map moduled and translates them to internal USSD messages. This module acts as gsmSCF towards a HLR and as a HLR towards a gsmSCF.&lt;br /&gt;
* the SMPP stack present in YATE (ysmpp module) which is able to catch internal USSD messages and transmit them over SMPP. It also translates SMPP messages into internal USSD messages.&lt;br /&gt;
* requests for new USSD sessions will go through routing to decide who should handle the request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following sections detail the behaviour of the system in the different USSD scenarios.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mobile originated USSD handling ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A user initiated USSD session is handled according to the following schema:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# HLR sends a ''processUnstructuredSS-Request (Invoke)'' for code *100#. camel_map decodes the ''ussd-String'' into ''ussd-Text=*100#''.&lt;br /&gt;
# the ussd_map module (gsmSCF side) processes the request received from the HLR and emits a ''call.route'' message with ''called=*100#''.&lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with the ''callto'' parameter set to the value returned from routing. ussd_map dispatches the ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will send  it to the target specified in ''callto'' parameter after the module prefix ''ysmppserver/''.&lt;br /&gt;
# The ysmpp module receives and process the received ''submit_sm'' message.&lt;br /&gt;
# The ysmpp module will send a ''call.route'' message with the ''called=*100#''.&lt;br /&gt;
# The ysmpp module emits a ''ussd.execute'' message with ''callto=retvalue from call.route'' message.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ussd.execute message and if it is the target of the message, meaning that ''callto'' starts with ''ussd_map/''. From that message it will build a map.message that it will send to the gsmSCF as a ''processUnstructuresSS-Request (Invoke)'' MAP message.&amp;lt;br&amp;gt;'''NOTE:''' From here on, the gsmSCF could handle the request in one of  two distinguished cases: one where the gsmSCF requires interaction with the mobile subscriber and one where the gsmSCF just needs to respond to the user request. The following steps detail the former case.&amp;lt;br&amp;gt;&lt;br /&gt;
# gsmSCF sends an ''unstructuredSS-Request (Invoke)'' to  request further information.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits an ''ussd.update'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.update'' message and confirms to the SMPP client that the message sent in step 5 was processed.&lt;br /&gt;
# The SMPP client should confirm the processing of the SMPP message sent in step 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver_sm'' message to the SMPP client with the menu received in ''ussd.update'' message.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message with the received menu.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message from SMPP client and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.update'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time in which the mobile subscribers responds can be quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway when receiving the response from the mobile subscriber.&lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 13.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 21.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 9 and 24 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''processUnstructuredSS-Request (ResultLast)''  for the initial user request.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''processUnstructuredSS-Request (ResultLast)'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 22 or 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 21 or 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 31.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 29.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''processUnstructuredSS-Request (ResultLast)''.&lt;br /&gt;
&lt;br /&gt;
==== Network initiated USSD Request ====&lt;br /&gt;
&lt;br /&gt;
A network initiated USSD session is handled as described in the following figure:&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
# gsmSCF sends''unstructuredSS-Request (Invoke)'' to USSD Gateway (HLR part) to present a menu for MSISDN 0015559191.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits a ''call.route'' message with called=0015559191. &lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with ''callto'' set to the route returned in the return value of the ''call.route'' message and dispatches an ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will then send to the target specified in the ''callto'&amp;quot; parameter after the ''ysmppserver'' module prefix.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message towards SMPP server.&lt;br /&gt;
# The SMPP server processes the received ''submit_sm'' message and dispatches a ''call.route'' message.&lt;br /&gt;
# After successfully dispatching of ''call.route'' message the SMPP server will dispatch a ''call.execute'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.execute'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time to receiving a response from the user after gsmSCF has requested user interaction could be possibly quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway &lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 4.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 13.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 1 and 16 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''TCAP END'' in order to finish the USSD session.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''TCAP END'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 13.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 22.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 21.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''END''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fallback/Proxy mode ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following images detail scenarios where the USSD GW is instructed to do failover.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when an HLR sends ''processUnstructuredSS-Request (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:''' &lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message. &lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD session fallback.&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when a gsmSCF sends a &amp;quot;unstructuredSS-Request/unstructuredSS-Notify (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:'''&lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message.&lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The SMPP USSD gateway will also be bypassed when the ''ussd_map'' module is configured to do failover for all requests.&lt;br /&gt;
&lt;br /&gt;
Any type of SMPP error received either in the result for the ''ussd.execute'' or in the first message back from SMPP that does not have a mapping on MAP will lead to the ''ussd_map'' module doing failover. Errors that would generate a failover are errors like timeout, session ended abnormally, unknown errors, congestion errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once ''ussd_map'' decides that failover should be done, it will use the original received message  from the HLR (MO case)/gsmSCF (MT case) and it will only alter the called address to be the one of the gsmSCF/HLR set for the failover.. The calling address will remain the one received from HLR/gsmSCF, the idea being that for the first message we want to pretend that we are the original gsmSCF/HLR. When the receiving end of this message will want to respond, it will use the calling address from the message. Seeing that the ''ussd_map'' module set it to the original calller's address, further messages exchanged in that dialog between HLR and gsmSCF will not pass through USSD GW again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Internal message API ====&lt;br /&gt;
&lt;br /&gt;
This section documents the YATE messages used internally by the USSD GW.&lt;br /&gt;
&lt;br /&gt;
===== call.route =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used by ussd_map and ysmpp module to determine a destination where a new USSD session should be sent for further processing.&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module when receiving a request for a new USSD session on MAP for ''ussd_map'' or on SMPP for ''ysmpp''.&lt;br /&gt;
''ussd_map'' will only send this message if default routing is not enabled from configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
* module&lt;br /&gt;
** type: string &lt;br /&gt;
** Name of the module which requested routing&lt;br /&gt;
* application&lt;br /&gt;
** type: string&lt;br /&gt;
** Name of the ussd_map application which sent this routing request&lt;br /&gt;
* route_type&lt;br /&gt;
** type: keyword, value: ussd &lt;br /&gt;
** Specifies routing type, in this case it'll be USSD routing&lt;br /&gt;
* smpp_session_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
* smpp_system_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* if the message was processed, the return value of the message indicates the destination of the subsequent ''ussd.execute'' message.&lt;br /&gt;
* if the message was not processed or it returned with error (signaled by the return value being either &amp;quot;-&amp;quot; or &amp;quot;error&amp;quot;)&lt;br /&gt;
** ''ussd_map'' will do failover&lt;br /&gt;
** ysmpp will close the SMPP session, indicating an error either set by the call.route or either set to the default unknown error indication.&lt;br /&gt;
&lt;br /&gt;
===== ussd.execute =====&lt;br /&gt;
&lt;br /&gt;
This message is used to begin a new USSD session:&lt;br /&gt;
* on SMPP, if the message is directed to the ''ysmpp'' module&lt;br /&gt;
* on MAP if the message is directed to the ''ussd_map'' module&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module after successful routing stage. In case of the ''ussd_map'' module, this is message is sent if the routing stage did not indicate failover necessity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* callto:  &lt;br /&gt;
** type : string&lt;br /&gt;
** It specifies the target module to process the message. The string should start with  'ysmppserver/' for the  ''ysmpp&amp;quot; module and with ''ussd_map/'' for the ''ussd_map'' module.&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier assigned for this USSD session by the entity that processed this message.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error returned if the message was not processed.&lt;br /&gt;
&lt;br /&gt;
Processing of this message will return failure:&lt;br /&gt;
* if the message will not be processed&lt;br /&gt;
* if the 'id' parameter is missing.&lt;br /&gt;
* in case of processing error &lt;br /&gt;
* in case of congestion&lt;br /&gt;
&lt;br /&gt;
===== ussd.update =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used for transmitting USSD messages during a USSD session. This type of message will be used after the initial stage of creating the session through ''ussd.execute'' has succeeded.&lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP CONTINUE message &lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will be refused if it is received after a ''ussd.finalize'' message.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a values not allowed in the context of the USSD session (e.g., sending a ''processUnstructuredSS-Request inside a ''ussd.update'' message)&lt;br /&gt;
&lt;br /&gt;
===== ussd.finalize =====&lt;br /&gt;
&lt;br /&gt;
This message is used to signal the termination of the USSD session. Successful processing of this message means that the USSD session was terminated and is no longer available. &lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP END/ABORT message depending upon the parameters received. A message containing an error that does not map to a MAP error will generate a TCAP ABORT.&lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client, a message that will usually contain a last message indication.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by 'peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a value not allowed in the context of the USSD session&lt;br /&gt;
&lt;br /&gt;
===== Keyword values =====&lt;br /&gt;
&lt;br /&gt;
This section details acceptable values for parameters listed as having type ''keyword''.&lt;br /&gt;
&lt;br /&gt;
* '''hlr.nature/vlr.nature/gsmscf.nature/destination_reference.nature'''&lt;br /&gt;
** unknown&lt;br /&gt;
** international&lt;br /&gt;
** national&lt;br /&gt;
** network-specific&lt;br /&gt;
** subscriber&lt;br /&gt;
** abbreviated&lt;br /&gt;
&lt;br /&gt;
* '''hlr.plan/vlr.plan/gsmscf.plan/destination_reference.plan'''&lt;br /&gt;
** unknown&lt;br /&gt;
** isdn&lt;br /&gt;
** data&lt;br /&gt;
** telex&lt;br /&gt;
** land-mobile&lt;br /&gt;
** national&lt;br /&gt;
** private&lt;br /&gt;
&lt;br /&gt;
* '''operation_type'''&lt;br /&gt;
** pssd: mapping of MAP v1 USSD operation ''processUnstructuredSS-Data'' and of SMPP operation ''PSSD''. &lt;br /&gt;
** pssr: mapping of MAP v2 USSD operation ''processUnstructuredSS-Request'' and of SMPP operation ''PSSR''.&lt;br /&gt;
** ussr: mapping of MAP v2 USSD operation ''unstructuredSS-Request'' and of SMPP operation ''USSR&amp;quot;.&lt;br /&gt;
** ussn: mapping of MAP v2 USSD operation ''unstructuredSS-Notify'' and of SMPP operation ''USSN''.&lt;br /&gt;
&lt;br /&gt;
* '''error'''&lt;br /&gt;
** invalid_logic:  error reported when required processing does not follow USSD rules (e.g., MT request starting with ''processUnstructuredSS-Requests'')&lt;br /&gt;
** system_failure: error mapping for MAP error ''systemFailure''.&lt;br /&gt;
** data_missing: error mapping for  MAP error ''dataMissing''.&lt;br /&gt;
** unexpected_data: error mapping for MAP error ''unexpectedDataValue''.&lt;br /&gt;
** unknown_alphabet: error mapping for MAP error ''unknownAlphabet''.&lt;br /&gt;
** absent_subscriber: error mapping for MAP error ''absentSubscriber''.&lt;br /&gt;
** illegal_subscriber: error mapping for MAP error ''illegalSubscriber''.&lt;br /&gt;
** illegal_equipment: error mapping for MAP error ''illegalEquipment''.&lt;br /&gt;
** ussd_busy: error mapping for MAP error ''ussd-Busy''.&lt;br /&gt;
** call_barred: error mapping for MAP error ''callBarred''.&lt;br /&gt;
** network_failure: error signaling message transmission failure due to  connectivity issues either on the SS7 side or SMPP side.&lt;br /&gt;
** timeout_expired: error signaling a  request timeout occurrence.&lt;br /&gt;
** ussd_sess_end_abnormally: error signaling USSD session termination due to an unknown cause. Mapping for this error implies a TCAP Abort either being generated of received. &lt;br /&gt;
** unknown_error: error specified when there is no available mapping for an errror from SMPP to MAP or vice versa.&lt;br /&gt;
** throttling_error: error signaling that a message failed to be processed due to processing side being in congestion state.&lt;br /&gt;
** protocol_error: SMPP generic error. This error is put whenever there is a SMPP specific error that cannot be mapped into one of the other errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== SMPP custom parameters ====&lt;br /&gt;
&lt;br /&gt;
* 0x1502 =&amp;gt; IMSI;&lt;br /&gt;
* 0x1503 =&amp;gt; VLR Type of Number;&lt;br /&gt;
* 0x1504 =&amp;gt; VLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1505 =&amp;gt; VLR address;&lt;br /&gt;
* 0x1506 =&amp;gt; GSM SCF Type of Number;&lt;br /&gt;
* 0x1507 =&amp;gt; GSM SCF Numbering Plan Indicator;&lt;br /&gt;
* 0x1508 =&amp;gt; GSM_SCF address;&lt;br /&gt;
* 0x1509 =&amp;gt; Destination Reference Type of Number;&lt;br /&gt;
* 0x150a =&amp;gt; Destination Reference Numbering Plan Indicator;&lt;br /&gt;
* 0x150b =&amp;gt; Destination Reference;&lt;br /&gt;
* 0x150c =&amp;gt; MSISDN&lt;br /&gt;
* 0x150d =&amp;gt; Alerting Pattern&lt;br /&gt;
* 0x1800 =&amp;gt; HLR Type of Number;&lt;br /&gt;
* 0x1801 =&amp;gt; HLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1802 =&amp;gt; HLR address.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
==== ysigchan module ====&lt;br /&gt;
&lt;br /&gt;
In order to have MAP connectivity, TCAP instances must be configured in ''ysigchan.conf'': &lt;br /&gt;
&lt;br /&gt;
 ; Example of a SS7 Transaction Capabilities Application Part&lt;br /&gt;
 ; This component is created when encountering a section of this kind&lt;br /&gt;
 ;[ss7tcap]&lt;br /&gt;
 ; type: keyword: identifies the component as a SS7 Transfer Capabilities Application Part&lt;br /&gt;
 ; type = ss7-tcap-ansi for ANSI TCAP&lt;br /&gt;
 ; type = ss7-tcap-itu for ITU TCAP&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; local_SSN: local SubSystem Number. Mandatory&lt;br /&gt;
 ;local_SSN=&lt;br /&gt;
 &lt;br /&gt;
 ; default_remote_SSN: remote SubSystem Number to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_SSN=&lt;br /&gt;
  &lt;br /&gt;
 ; default_remote_pointcode: remote Point Code to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_pointcode=&lt;br /&gt;
 &lt;br /&gt;
 ; pointcodetype: remote Point Code type. See above documentation for available types&lt;br /&gt;
 ;pointcodetype=&lt;br /&gt;
 &lt;br /&gt;
 ; sccp: Name of the SCCP component to create and be used by this TCAP&lt;br /&gt;
 ; A section with the name given here must exist in order to configure the SCCP level&lt;br /&gt;
 ;sccp=&lt;br /&gt;
 &lt;br /&gt;
 ; default_hopcounter: HopCounter provided to SCCP if the application does not provide one&lt;br /&gt;
 ; Values range 1-15, 0 or boolean false disables, boolean true sets to 15&lt;br /&gt;
 ; A non-zero value will force using XUDT or LUDT instead of UDT messages&lt;br /&gt;
 ;default_hopcounter=false&lt;br /&gt;
 &lt;br /&gt;
 ; transact_timeout: Time in seconds to timeout a TCAP transaction after no more activity was registered on it&lt;br /&gt;
 ; NOTE: Values below 15 seconds will be ignored and the timer will assume the default value.&lt;br /&gt;
 ; Defaults to 300 seconds&lt;br /&gt;
 ;transact_timeout=300&lt;br /&gt;
 &lt;br /&gt;
 ; max_timeout_checks: integer: Maximum number of timeout checks done on a transaction without starting the transaction&lt;br /&gt;
 ;  timer before forcefully starting the transaction timer&lt;br /&gt;
 ; Defaults to 10&lt;br /&gt;
 ;max_timeout_checks=10 &lt;br /&gt;
 &lt;br /&gt;
 ; timeout_check: Time interval in milliseconds to check for timeouts.&lt;br /&gt;
 ; Default to 100 ms&lt;br /&gt;
 ;timeout_check=100 &lt;br /&gt;
 &lt;br /&gt;
 ; floodevents: int: How many queued incoming TCAP messages trigger a congestion warning and the drop mechanism&lt;br /&gt;
 ;  for Unidirectional/Begin/QueryWithPermission/QueryWithoutPermission messages.&lt;br /&gt;
 ;  Exit from congestion will take place when there are less the floodevents/4 messages in the queue&lt;br /&gt;
 ; NOTE! Setting this parameter to 0 will disable the congestion warning and protection. Setting it to one will &lt;br /&gt;
 ;  be overriden and floodevents will be set to 2.&lt;br /&gt;
 ;floodevents=1000&lt;br /&gt;
 &lt;br /&gt;
 ;print-messages: Boolean to enable/disable printing of decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ;extended-debug: Boolean to enable/disable printing of the step-by-step decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload. print-messages must be true.&lt;br /&gt;
 ;extended-debug=false&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for keeping the list of current transactions&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
 [tcap-scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=147                                                                                                                                &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                     &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap-hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=7                                                                                                                                  &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Further configuration for SS7 connectivity is required (SCCP, MTP3, etc.).&lt;br /&gt;
&lt;br /&gt;
==== camel_map module ====&lt;br /&gt;
&lt;br /&gt;
Configuring of tracking IDs is done in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ;track_id: string: Shared engine variable name used to obtain a unique tracking ID for TCAP transactions&lt;br /&gt;
 ; If not set, the module will not set a tracking ID for the TCAP transaction&lt;br /&gt;
 ;track_id=&lt;br /&gt;
 &lt;br /&gt;
 ;track_id_base: string: Optional string with which to prefix the tracking ID&lt;br /&gt;
 ; This setting has no effect if track_id is not set&lt;br /&gt;
 ;track_id_base=&lt;br /&gt;
&lt;br /&gt;
In order to allow communication over MAP through SS7, sections configurating application should exist for each role of the ussd_map module (gsmSCF/HLR). A ''camel_map.conf'' section configuring an application looks like this:&lt;br /&gt;
 &lt;br /&gt;
 ;[local appName]&lt;br /&gt;
 ; This section configures a local application which transmits the XML messages as internal Yate messages&lt;br /&gt;
 &lt;br /&gt;
 ; translator: string: name of translator to be used by this application.&lt;br /&gt;
 ; Must be one one the [tcap ...] sections configured in the camel_map.conf file.&lt;br /&gt;
 ;translator=&lt;br /&gt;
  &lt;br /&gt;
 ; capabilities: string: List of capabilities separated by commas which this application supports&lt;br /&gt;
 ;capabilities=&lt;br /&gt;
  &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into a Yate message&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - string: pass the XML as a string&lt;br /&gt;
 ;  - object: pass the XML as an object&lt;br /&gt;
 ;  - both: pass the XML as a string and object&lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; enable: bool: Enable this application&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
&lt;br /&gt;
The translator setting refers to a section of the type defined below which configures atachement to a TCAP instance&lt;br /&gt;
&lt;br /&gt;
 ;[tcap map]&lt;br /&gt;
 ; This section configures a TCAP User MAP/CAMEL protocol translator&lt;br /&gt;
 &lt;br /&gt;
 ; enable: bool: Enable this translator&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of TCAP User &lt;br /&gt;
 ; Allowed values are MAP or CAMEL&lt;br /&gt;
 ;type=MAP&lt;br /&gt;
 &lt;br /&gt;
 ; host: IP address: Address on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ;host=127.0.0.1 &lt;br /&gt;
 &lt;br /&gt;
 ; port: integer: Port on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ; Note: setting port to 0 will disable the listener, so it will not accept TCP applications&lt;br /&gt;
 ;port=5555&lt;br /&gt;
 &lt;br /&gt;
 ; tcap: string: Name of TCAP to which this TCAP user should attach itself to for the SS7 communication&lt;br /&gt;
 ;tcap=&lt;br /&gt;
 &lt;br /&gt;
 ; add-encoding: bool: Always add encoding attribute to XML elements for decoded parameters&lt;br /&gt;
 ;add-encoding=default from [general]&lt;br /&gt;
 &lt;br /&gt;
 ; add-timestamp: bool: Add to XML timestamps used for estimating application latency&lt;br /&gt;
 ;add-timestamp=default from [general] &lt;br /&gt;
 &lt;br /&gt;
 ; print-messages: bool: Debug option to print TCAP and XML messages. This option is applicable on reload.&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-string: string: Specifies what the ussd-String parameter will contain as data&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - octets: ussd-String will contain the octets as they were received&lt;br /&gt;
 ;  - text: ussd-String will contain the GSM7Bit decoded text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-string=text&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-decode: string: Specifies what ussd-String parameters should be decoded into text&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - none: ussd-String parameters will never be decoded into text&lt;br /&gt;
 ;  - first: ussd-String in a TCAP Begin message will be decoded into text&lt;br /&gt;
 ;  - all: all ussd-String parameters will be decoded into text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-decode=all&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for mapping of TCAP transactions to applications&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For load sharing (especially in cases of high loads), you can configure multiple applications using the same translator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 applications acting as a gsmSCF, each one attached to the TCAP instance with gsmSCF SSN, and 2 applications as HLR, each one attached to the TCAP instance with HLR SSN 6:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 track_id=ussdgw&lt;br /&gt;
 track_id_base=ussdgw/&lt;br /&gt;
 &lt;br /&gt;
 [tcap scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-scf                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false                                                                                                                           &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-hlr                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false   &lt;br /&gt;
 &lt;br /&gt;
 [local ussdscf1]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all                                                                                                                            &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [local ussdscf2]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all               &lt;br /&gt;
 &lt;br /&gt;
 [local ussdhlr1]&lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all                                                                                                                            &lt;br /&gt;
 &lt;br /&gt;
 [local ussdhlr2]                                                                                                                             &lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
The module is configured through ''ussd_map.conf''. The configuration file sets timeout parameters and processing threads parameters in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList for keeping dialogs&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
 &lt;br /&gt;
 ; component_ttl: integer: Component time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; Defaults to 600000 (10 minutes)&lt;br /&gt;
 ;component_ttl=600000&lt;br /&gt;
 &lt;br /&gt;
 ; dialog_idle_ttl: integer: Dialog idle (nothing sent/received) time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; It can be set to 0 to keep it alive until the remote party terminates the dialog&lt;br /&gt;
 ; Defaults to 86400000 (1 day)&lt;br /&gt;
 ;dialog_idle_ttl=86400000&lt;br /&gt;
&lt;br /&gt;
 ; dialog_ended_ttl: integer: Ended dialog time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000.&lt;br /&gt;
 ; It can be set to 0 to remove the dialog after termination&lt;br /&gt;
 ; Defaults to 0&lt;br /&gt;
 ;dialog_ended_ttl=0&lt;br /&gt;
 &lt;br /&gt;
 ; dispatcher_maxthreads: integer: Maximum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ; NOTE: if the value is set to 0, the module will enqueue the messages into YATE's engine.&lt;br /&gt;
 ;dispatcher_maxthreads=0&lt;br /&gt;
&lt;br /&gt;
 ; dispatcher_minthreads: integer: Minimum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ;dispatcher_minthreads=1&lt;br /&gt;
&lt;br /&gt;
 ;dispatcher_priority: string: Default priority of message dispatch threads&lt;br /&gt;
 ;dispatcher_priority=normal&lt;br /&gt;
&lt;br /&gt;
 ; floodevents: integer: Threshold for signaling congestion when the number of messages waiting to be dispatched exceeds it.&lt;br /&gt;
 ; When entering congestion, all new MAP dialogs and USSD sessions will be refused.&lt;br /&gt;
 ; 0 disables the mechanism&lt;br /&gt;
 ;floodevents=0&lt;br /&gt;
&lt;br /&gt;
 ; congestion_exit_factor: double: Factor used to calculate the exit congestion threshold&lt;br /&gt;
 ; NOTE: if the factor results in a exit congestion threshold of 0 or greater than floodevents, &lt;br /&gt;
 ; the setting will be overriden and the exit congestion threshold will be set to 1.&lt;br /&gt;
 ;congestion_exit_factor=0.5&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Timeout settings should be correlated with timeout settings in TCAP and SMPP, each having its own timeout mechanism.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gateway applications which do the MAP &amp;lt;-&amp;gt; USSD translation are configured through section like the one below:&lt;br /&gt;
&lt;br /&gt;
 [appName]&lt;br /&gt;
 ; section name is the name of the camel_map application, it must correspond to a [local appName] section in camel_map &lt;br /&gt;
&lt;br /&gt;
 ; enable: boolean: Enable this application&lt;br /&gt;
 ; Defaults to yes&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of MAP &amp;lt;-&amp;gt; USSD translator: &lt;br /&gt;
 ;  - SCF means that is the part that receives new dialogs from the HLR (user initiated USSD)&lt;br /&gt;
 ;  - HLR is the part that receives new dialogs from gsmSCF (network initiated USSD)&lt;br /&gt;
 ; This setting cannot be changed on reload.&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into &lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; print_msg: boolean: Print sent/received messages to output&lt;br /&gt;
 ;print_msg=no&lt;br /&gt;
  &lt;br /&gt;
 ; print_xml: boolean: Print sent/received XML data to output&lt;br /&gt;
 ;print_xml=no&lt;br /&gt;
 &lt;br /&gt;
 ; local_addr. : prefix: Parameters prefixed with this set the local SCCP address of this application &lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; local_addr.CallingPartyAddress.route=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.ssn=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.pointcode=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.nature=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.plan=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.translation=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.encoding= &lt;br /&gt;
 &lt;br /&gt;
 ; default_routing: bool : Do routing to default address for all messages&lt;br /&gt;
 ; default_routing=no&lt;br /&gt;
 &lt;br /&gt;
 ; default_addr. : prefix: parameters prefixed with this will be used as the default SCCP called address&lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; default_addr.application=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.route=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.ssn=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.pointcode=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.nature=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.translation=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.encoding=&lt;br /&gt;
 &lt;br /&gt;
 ; hlr_ssn: integer: The SSN expected in the calling address from a HLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;hlr_ssn=6&lt;br /&gt;
 &lt;br /&gt;
 ; vlr_ssn: integer: The SSN expected in the calling address from a VLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;vlr_ssn=7&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each section should have its own equivalent in ''camel_map.conf''.&lt;br /&gt;
In the USSD GW scenario, at least tho applications are needed, one acting as SCF, one as HLR. For load sharing multiple gsmSCF and HLR applications can be configured (see the configuration example below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 gsmSCF applications and 2 HLR applications, each one corresponding with a application section in the ''camel_map.conf'' example:&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 component_ttl=600000                                                                                                                         &lt;br /&gt;
 dialog_ended_ttl=0                                                                                                                           &lt;br /&gt;
 dispatcher_maxthreads=10                                                                                                                     &lt;br /&gt;
 dispatcher_minthreads=5                                                                                                                      &lt;br /&gt;
 ;dispatcher_priority=normal                                                                                                                  &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [ussdscf1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
&lt;br /&gt;
 [ussdscf2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
 &lt;br /&gt;
 [ussdhlr1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                         &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd                                                                                              &lt;br /&gt;
                                                   &lt;br /&gt;
 [ussdhlr2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
TODO - configuration explanations&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example''''&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
 server=smpp-server                                                                                                                           &lt;br /&gt;
 track_id=ussdgw                                                                                                                              &lt;br /&gt;
 track_id_base=ussdgw/                                                                                                                        &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [smpp-server]                                                                                                                                &lt;br /&gt;
 enable=true                                                                                                                                  &lt;br /&gt;
 session_responseinterval=600000                                                                                                              &lt;br /&gt;
 sessionset_process_max=1                                                                                                                     &lt;br /&gt;
 codec_warndefaults=false                                                                                                                     &lt;br /&gt;
 print-messages=no                                                                                                                            &lt;br /&gt;
                                                                                                                                            &lt;br /&gt;
 [listenerserver server]                                                                                                                      &lt;br /&gt;
 ;enable=yes                                                                                                                                  &lt;br /&gt;
 addr=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=12345    &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Monitoring ===&lt;br /&gt;
&lt;br /&gt;
This section details comands through which the state of the USSD GW can be monitored.&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
* '''Congestion state monitoring'''&lt;br /&gt;
&lt;br /&gt;
The ''ussd_map'' module will generate an alarm when entering/exiting a congestion state. If SNMP support is enabled, this will generate a trap on SNMP.&lt;br /&gt;
The congestion status is also reported in the ''state'' entry in the result of the module status command.&lt;br /&gt;
&lt;br /&gt;
* '''Module status'''&lt;br /&gt;
&lt;br /&gt;
The module reports its status through the following command in the YATE telnet console:&lt;br /&gt;
&lt;br /&gt;
 status ussd_map&lt;br /&gt;
&lt;br /&gt;
The command will print the following information:&lt;br /&gt;
&lt;br /&gt;
 workers=count_of_dispatching_threads,messages=count_msg,dialogs=count_of_dialogs,state=normal,count=count_of_applications;format=Type | CurrentDlgs| MAPCreated | UssdCreated |DefaultRouted | MAPSent | MapRecv | USSDSent | USSDRecv | MAPAbort | USSDAbort | BuiltAbort | MAPTimeouts | USSDTimeouts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
* workers: current number of used dispatching threads from the maximum configured pool (e.g., 3/10 means 3 threads are used of a pool of 10)&lt;br /&gt;
* messages: count of messages waiting on the dispatching queue of the engine&lt;br /&gt;
* dialogs: total number of USSD sessions currently handled by all applications&lt;br /&gt;
* state of the engine: normal/congestion&lt;br /&gt;
* count: number of applications acting either as gsmSCF, either as HLR&lt;br /&gt;
* format: name of the application for which the following data is reported:&lt;br /&gt;
** Type: role of the application: SCF (communicates with real HLR), HLR (communicates with real gsmSCF)&lt;br /&gt;
** CurrentDlgs: number of current MAP dialogs handled by this application&lt;br /&gt;
** MAPCreated: number of sessions (dialogs) started by the MAP side&lt;br /&gt;
** UssdCreated: number of sessions (dialogs) started by the SMPP side&lt;br /&gt;
** DefaultRouted: number of dialogs for which failover took place&lt;br /&gt;
** MAPSent: number of MAP messages sent to gsmSCF/HLR. It doesn't count the ones sent via failover routing.&lt;br /&gt;
** MAPRecv: number of MAP messages received from gsmSCF/HLR&lt;br /&gt;
** USSDSent: number of sent ussd.execute/ussd.update/ussd.finalize messages towards the SMPP side.&lt;br /&gt;
** USSDRecv: number of received ussd.execute/ussd.update/usdd.notify messages from SMPP side.&lt;br /&gt;
** MAPAbort: number of dialog aborts generated by MAP side&lt;br /&gt;
** USSDAbort: number of dialog aborts generated by USSD side&lt;br /&gt;
** BuiltAbort: number of dialog aborts generated by the ussd_map module (e.g., not having a ussd.update message processed by anyone will cause ussd_map to generate session abort)&lt;br /&gt;
** MAPTimeouts: number of dialog timeouts generated by MAP side&lt;br /&gt;
** USSDTimeouts: number of timeouts reported by USSD side&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Module control commands'''&lt;br /&gt;
&lt;br /&gt;
The module offers the following control commands through the telnet console:&lt;br /&gt;
* ''control ussd_map appName print-msg [yes|no|verbose]'' : enable printing of received/sent map./ussd./messages.&lt;br /&gt;
* ''control ussd_map appName print-xml [yes|no|verbose]'' : enable printing of received/sent XMLs.&lt;br /&gt;
* ''control ussd_map appName export-xml-as [string|object|both]'' : change the way XML is set in the internal messages&lt;br /&gt;
* ''control ussd_map start_stats'' : begin gathering data for statistics&lt;br /&gt;
* ''control ussd_map stop_stats'' : stop gathering data for statistics&lt;br /&gt;
* ''control usdd_map stats'' : print statistic data per engine and each application in part. Data contains number of MAP messages handled per second, number of USSD messages handled per second, maximum number of current dialogs, number of timeouts and number of aborts.&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
The ysmpp module provides the following options for status command:&lt;br /&gt;
&lt;br /&gt;
'NOTE' the module_name can take the following values: smppserver or smppclient.&lt;br /&gt;
&lt;br /&gt;
* status module_name listeners&lt;br /&gt;
Prints the module listeners status in format: Address|Status|Reason.&lt;br /&gt;
&lt;br /&gt;
* status module_name sessions&lt;br /&gt;
Prints the status of the sessions in format: Id|State|BindMode|SystemId|IpAddress:Port|Congested|Incoming Queue|Outgoing Queue;&lt;br /&gt;
&lt;br /&gt;
** Id: The ID of the SMPP session. Can be used for routing.&lt;br /&gt;
** State: The state of the SMPP session.&lt;br /&gt;
** BindMode: The mode in which the session was bound. (Send/Recv/SendRecv)&lt;br /&gt;
** SystemId: The id with which the session has been authenticated. Can be used in routing.&lt;br /&gt;
** IpAddress:Port: The Ip Address and port of the remote end of the session.&lt;br /&gt;
** Congested: True if this session is in congestion state.&lt;br /&gt;
** Incoming Queue: The number of messages not processed in the incoming queue.&lt;br /&gt;
** Outgoing Queue: The number of messages not processed in the outgoing queue.&lt;br /&gt;
&lt;br /&gt;
*status module_name ussd overview&lt;br /&gt;
Prints the stats of the USSD sessions in format: Total|Active|Average Duration|Total Sent|Total Received|AverageTrafficPerSecond|EndedWithErrors|CongestionRefused&lt;br /&gt;
&lt;br /&gt;
** Total: the number of USSD sessions created since the starting of the program.&lt;br /&gt;
** Active: the number of USSD sessions currently active.&lt;br /&gt;
** Average Duration: average duration of a ussd session.&lt;br /&gt;
** Total Sent: total number of SMPP messages sent for USSD sessions.&lt;br /&gt;
** Total Received: total number of SMPP messages received for USSD sessions.&lt;br /&gt;
** AverageTrafficPerSecond: average traffic per second for USSD sessions.&lt;br /&gt;
** EndedWithErrors: the number of USSD sessions that ended with error.&lt;br /&gt;
** CongestionRefused: the number of USSD sessions refused because the server was overloaded.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* Mobile Application Part (MAP) specification: ETSI TE 129 002&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/USSD_GW</id>
		<title>USSD GW</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/USSD_GW"/>
				<updated>2014-02-06T15:53:39Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: /* camel_map module */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an implementation an USSD gateway acting as a MAP Service Control Function (gsmSCF) and as a HLR at the same time. When communicating with a HLR or VLR, the YATE USSD GW acts as a gsmSCF. When communicating with a gsmSCF, the YATE USSDGW acts as a HLR.&lt;br /&gt;
The functionality of the USSD GW allows:&lt;br /&gt;
* redirecting of USSD requests arriving either from user side or gsmSCF side to a SMPP client where they can be altered.&lt;br /&gt;
* acting as a proxy for requests that need not be handled by SMPP clients or when the SMPP handling fails&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MAP USSD description ==&lt;br /&gt;
&lt;br /&gt;
In versions 2 and 3 of the GSM MAP protocol there are 3 operations used for USSD operations:&lt;br /&gt;
* processUnstructedSS-Request&lt;br /&gt;
* unstructuredSS-Request&lt;br /&gt;
* unstrusturedSS-Notify&lt;br /&gt;
&lt;br /&gt;
The are 2 scenarios for USSD operations:&lt;br /&gt;
* mobile initiated USSD requests&lt;br /&gt;
* network initiated USSD requests&lt;br /&gt;
&lt;br /&gt;
A TCAP dialog used by USSD is always terminated by the network side.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mobile initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobile initiated USSD requests are USSD requests started by the mobile subscriber.  &lt;br /&gt;
&lt;br /&gt;
A USSD request is started when receiving a TCAP BEGIN message containing the ''processUnstructedSS-Request'' Invoke operation. The request can be handled by the VLR, HLR or a gsmSCF. If the VLR does not handle the request, it will transmit it to the HLR. The HLR can either handle it itself or it can transmit it to a gsmSCF for handling.&lt;br /&gt;
&lt;br /&gt;
At this point, the network can either send a response to the request immediately or request additional information. In the first case, the handler of the request will send a TCAP End with ''processUnstructuredSS-Request'' ResultLast containing the result for the request. &lt;br /&gt;
In the latter case, the network will send a TCAP CONTINUE with ''unstructuredSS-Request'' Invoke operation. The response of the mobile subscriber to this request will be passed to the network in a TCAP CONTINUE with ''unstructuredSS-Request'' ResultLast component. At this point, if the network decides that it has enough information for providing the response to the user, it will send a TCAP END with ''processUnstructuredSS-Request'' ResultLast. Otherwise, it can request further information through another ''unstructuredSS-Request'' Invoke operation.&lt;br /&gt;
&lt;br /&gt;
=== Network initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD requests are USSD requests started by the network towards a certain subscriber.&lt;br /&gt;
&lt;br /&gt;
Requests made by the network can be of one of two types:&lt;br /&gt;
* user interaction requests&lt;br /&gt;
* network notification requests.&lt;br /&gt;
&lt;br /&gt;
User interaction requests are USSD requests that the network makes in which it requires some type of information back from the mobile subscriber. These are started by the network through a TCAP BEGIN containing an ''unstructuredSS-Request'' Invoke. The answer from the mobile subscriber will be received in a TCAP CONTINUE containing an ''unstructuredSS-Request'' ResultLast. If the network still wants to request further information, it will repeat the process. Otherwise, it will send a TCAP END to close the TCAP dialog.&lt;br /&gt;
&lt;br /&gt;
Network notification requests are USSD requests in which the network only sends a notification to the user. This is achieved by sending a TCAP BEGIN message containing a ''unstructuredSS-Notify'' Invoke. The mobile subscriber side will only respond with a TCAP CONTINUE containing an empty ''unstructuredSS-Notify'' in order to signal that the notification was received. The network will close the TCAP dialog through TCAP END.&lt;br /&gt;
&lt;br /&gt;
=== MAP USSD parameters ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following list describe common parameters used across all MAP USSD operations:&lt;br /&gt;
* ''destinationReference'': this parameter will contain either an MSISDN or an IMSI. In the case of mobile originated USSD request, this will identify the user which made the request. In the case of network initiated requests, it will identify the mobile user to be contacted for this request.&lt;br /&gt;
* ''ussd-String'': for ''processUnstructuredSS-Request'' Invoke it contains the dialed USSD code, for the result it would probably contain a message from the network detailing the result of the request. For ''unstructuredSS-Request'' Invoke it will contain a message asking for the user to choose some option and for the result it will contain the option chosen by the user. In the case of ''unstructuredSS-Notify'', this parameter will only be present in the Invoke.&lt;br /&gt;
* ''ussd-DataCodingScheme'': this is a parameter which specifies in which way the ''ussd-String'' parameter is encoded and it is present whenever ''ussd-String'' is present. E.g., this parameter would indicate if the ''ussd-String'' is encoded using GSM7bit encoding or UCS2.&lt;br /&gt;
&lt;br /&gt;
== SMPP USSD description ==&lt;br /&gt;
&lt;br /&gt;
'''TO DO'''&lt;br /&gt;
&lt;br /&gt;
== System description ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== System design ===&lt;br /&gt;
&lt;br /&gt;
In order to provide the specified functionality, the system makes use of the following YATE components:&lt;br /&gt;
* the SS7 stack  present in YATE &lt;br /&gt;
* the camel_map module which decodes/encodes MAP messages coming from the SS7 network to/from internal YATE messages containing MAP operations in XML form. Together with the SS7 layer this provides MAP connectivity with HLR/gsmSCF.&lt;br /&gt;
* the ussd_map module which takes internal MAP messsages decoded by the camel_map moduled and translates them to internal USSD messages. This module acts as gsmSCF towards a HLR and as a HLR towards a gsmSCF.&lt;br /&gt;
* the SMPP stack present in YATE (ysmpp module) which is able to catch internal USSD messages and transmit them over SMPP. It also translates SMPP messages into internal USSD messages.&lt;br /&gt;
* requests for new USSD sessions will go through routing to decide who should handle the request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following sections detail the behaviour of the system in the different USSD scenarios.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mobile originated USSD handling ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A user initiated USSD session is handled according to the following schema:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# HLR sends a ''processUnstructuredSS-Request (Invoke)'' for code *100#. camel_map decodes the ''ussd-String'' into ''ussd-Text=*100#''.&lt;br /&gt;
# the ussd_map module (gsmSCF side) processes the request received from the HLR and emits a ''call.route'' message with ''called=*100#''.&lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with the ''callto'' parameter set to the value returned from routing. ussd_map dispatches the ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will send  it to the target specified in ''callto'' parameter after the module prefix ''ysmppserver/''.&lt;br /&gt;
# The ysmpp module receives and process the received ''submit_sm'' message.&lt;br /&gt;
# The ysmpp module will send a ''call.route'' message with the ''called=*100#''.&lt;br /&gt;
# The ysmpp module emits a ''ussd.execute'' message with ''callto=retvalue from call.route'' message.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ussd.execute message and if it is the target of the message, meaning that ''callto'' starts with ''ussd_map/''. From that message it will build a map.message that it will send to the gsmSCF as a ''processUnstructuresSS-Request (Invoke)'' MAP message.&amp;lt;br&amp;gt;'''NOTE:''' From here on, the gsmSCF could handle the request in one of  two distinguished cases: one where the gsmSCF requires interaction with the mobile subscriber and one where the gsmSCF just needs to respond to the user request. The following steps detail the former case.&amp;lt;br&amp;gt;&lt;br /&gt;
# gsmSCF sends an ''unstructuredSS-Request (Invoke)'' to  request further information.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits an ''ussd.update'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.update'' message and confirms to the SMPP client that the message sent in step 5 was processed.&lt;br /&gt;
# The SMPP client should confirm the processing of the SMPP message sent in step 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver_sm'' message to the SMPP client with the menu received in ''ussd.update'' message.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message with the received menu.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message from SMPP client and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.update'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time in which the mobile subscribers responds can be quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway when receiving the response from the mobile subscriber.&lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 13.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 21.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 9 and 24 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''processUnstructuredSS-Request (ResultLast)''  for the initial user request.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''processUnstructuredSS-Request (ResultLast)'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 22 or 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 21 or 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 31.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 29.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''processUnstructuredSS-Request (ResultLast)''.&lt;br /&gt;
&lt;br /&gt;
==== Network initiated USSD Request ====&lt;br /&gt;
&lt;br /&gt;
A network initiated USSD session is handled as described in the following figure:&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
# gsmSCF sends''unstructuredSS-Request (Invoke)'' to USSD Gateway (HLR part) to present a menu for MSISDN 0015559191.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits a ''call.route'' message with called=0015559191. &lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with ''callto'' set to the route returned in the return value of the ''call.route'' message and dispatches an ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will then send to the target specified in the ''callto'&amp;quot; parameter after the ''ysmppserver'' module prefix.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message towards SMPP server.&lt;br /&gt;
# The SMPP server processes the received ''submit_sm'' message and dispatches a ''call.route'' message.&lt;br /&gt;
# After successfully dispatching of ''call.route'' message the SMPP server will dispatch a ''call.execute'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.execute'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time to receiving a response from the user after gsmSCF has requested user interaction could be possibly quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway &lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 4.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 13.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 1 and 16 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''TCAP END'' in order to finish the USSD session.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''TCAP END'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 13.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 22.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 21.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''END''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fallback/Proxy mode ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following images detail scenarios where the USSD GW is instructed to do failover.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when an HLR sends ''processUnstructuredSS-Request (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:''' &lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message. &lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD session fallback.&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when a gsmSCF sends a &amp;quot;unstructuredSS-Request/unstructuredSS-Notify (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:'''&lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message.&lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The SMPP USSD gateway will also be bypassed when the ''ussd_map'' module is configured to do failover for all requests.&lt;br /&gt;
&lt;br /&gt;
Any type of SMPP error received either in the result for the ''ussd.execute'' or in the first message back from SMPP that does not have a mapping on MAP will lead to the ''ussd_map'' module doing failover. Errors that would generate a failover are errors like timeout, session ended abnormally, unknown errors, congestion errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once ''ussd_map'' decides that failover should be done, it will use the original received message  from the HLR (MO case)/gsmSCF (MT case) and it will only alter the called address to be the one of the gsmSCF/HLR set for the failover.. The calling address will remain the one received from HLR/gsmSCF, the idea being that for the first message we want to pretend that we are the original gsmSCF/HLR. When the receiving end of this message will want to respond, it will use the calling address from the message. Seeing that the ''ussd_map'' module set it to the original calller's address, further messages exchanged in that dialog between HLR and gsmSCF will not pass through USSD GW again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Internal message API ====&lt;br /&gt;
&lt;br /&gt;
This section documents the YATE messages used internally by the USSD GW.&lt;br /&gt;
&lt;br /&gt;
===== call.route =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used by ussd_map and ysmpp module to determine a destination where a new USSD session should be sent for further processing.&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module when receiving a request for a new USSD session on MAP for ''ussd_map'' or on SMPP for ''ysmpp''.&lt;br /&gt;
''ussd_map'' will only send this message if default routing is not enabled from configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
* module&lt;br /&gt;
** type: string &lt;br /&gt;
** Name of the module which requested routing&lt;br /&gt;
* application&lt;br /&gt;
** type: string&lt;br /&gt;
** Name of the ussd_map application which sent this routing request&lt;br /&gt;
* route_type&lt;br /&gt;
** type: keyword, value: ussd &lt;br /&gt;
** Specifies routing type, in this case it'll be USSD routing&lt;br /&gt;
* smpp_session_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
* smpp_system_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* if the message was processed, the return value of the message indicates the destination of the subsequent ''ussd.execute'' message.&lt;br /&gt;
* if the message was not processed or it returned with error (signaled by the return value being either &amp;quot;-&amp;quot; or &amp;quot;error&amp;quot;)&lt;br /&gt;
** ''ussd_map'' will do failover&lt;br /&gt;
** ysmpp will close the SMPP session, indicating an error either set by the call.route or either set to the default unknown error indication.&lt;br /&gt;
&lt;br /&gt;
===== ussd.execute =====&lt;br /&gt;
&lt;br /&gt;
This message is used to begin a new USSD session:&lt;br /&gt;
* on SMPP, if the message is directed to the ''ysmpp'' module&lt;br /&gt;
* on MAP if the message is directed to the ''ussd_map'' module&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module after successful routing stage. In case of the ''ussd_map'' module, this is message is sent if the routing stage did not indicate failover necessity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* callto:  &lt;br /&gt;
** type : string&lt;br /&gt;
** It specifies the target module to process the message. The string should start with  'ysmppserver/' for the  ''ysmpp&amp;quot; module and with ''ussd_map/'' for the ''ussd_map'' module.&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier assigned for this USSD session by the entity that processed this message.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error returned if the message was not processed.&lt;br /&gt;
&lt;br /&gt;
Processing of this message will return failure:&lt;br /&gt;
* if the message will not be processed&lt;br /&gt;
* if the 'id' parameter is missing.&lt;br /&gt;
* in case of processing error &lt;br /&gt;
* in case of congestion&lt;br /&gt;
&lt;br /&gt;
===== ussd.update =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used for transmitting USSD messages during a USSD session. This type of message will be used after the initial stage of creating the session through ''ussd.execute'' has succeeded.&lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP CONTINUE message &lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will be refused if it is received after a ''ussd.finalize'' message.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a values not allowed in the context of the USSD session (e.g., sending a ''processUnstructuredSS-Request inside a ''ussd.update'' message)&lt;br /&gt;
&lt;br /&gt;
===== ussd.finalize =====&lt;br /&gt;
&lt;br /&gt;
This message is used to signal the termination of the USSD session. Successful processing of this message means that the USSD session was terminated and is no longer available. &lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP END/ABORT message depending upon the parameters received. A message containing an error that does not map to a MAP error will generate a TCAP ABORT.&lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client, a message that will usually contain a last message indication.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by 'peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a value not allowed in the context of the USSD session&lt;br /&gt;
&lt;br /&gt;
===== Keyword values =====&lt;br /&gt;
&lt;br /&gt;
This section details acceptable values for parameters listed as having type ''keyword''.&lt;br /&gt;
&lt;br /&gt;
* '''hlr.nature/vlr.nature/gsmscf.nature/destination_reference.nature'''&lt;br /&gt;
** unknown&lt;br /&gt;
** international&lt;br /&gt;
** national&lt;br /&gt;
** network-specific&lt;br /&gt;
** subscriber&lt;br /&gt;
** abbreviated&lt;br /&gt;
&lt;br /&gt;
* '''hlr.plan/vlr.plan/gsmscf.plan/destination_reference.plan'''&lt;br /&gt;
** unknown&lt;br /&gt;
** isdn&lt;br /&gt;
** data&lt;br /&gt;
** telex&lt;br /&gt;
** land-mobile&lt;br /&gt;
** national&lt;br /&gt;
** private&lt;br /&gt;
&lt;br /&gt;
* '''operation_type'''&lt;br /&gt;
** pssd: mapping of MAP v1 USSD operation ''processUnstructuredSS-Data'' and of SMPP operation ''PSSD''. &lt;br /&gt;
** pssr: mapping of MAP v2 USSD operation ''processUnstructuredSS-Request'' and of SMPP operation ''PSSR''.&lt;br /&gt;
** ussr: mapping of MAP v2 USSD operation ''unstructuredSS-Request'' and of SMPP operation ''USSR&amp;quot;.&lt;br /&gt;
** ussn: mapping of MAP v2 USSD operation ''unstructuredSS-Notify'' and of SMPP operation ''USSN''.&lt;br /&gt;
&lt;br /&gt;
* '''error'''&lt;br /&gt;
** invalid_logic:  error reported when required processing does not follow USSD rules (e.g., MT request starting with ''processUnstructuredSS-Requests'')&lt;br /&gt;
** system_failure: error mapping for MAP error ''systemFailure''.&lt;br /&gt;
** data_missing: error mapping for  MAP error ''dataMissing''.&lt;br /&gt;
** unexpected_data: error mapping for MAP error ''unexpectedDataValue''.&lt;br /&gt;
** unknown_alphabet: error mapping for MAP error ''unknownAlphabet''.&lt;br /&gt;
** absent_subscriber: error mapping for MAP error ''absentSubscriber''.&lt;br /&gt;
** illegal_subscriber: error mapping for MAP error ''illegalSubscriber''.&lt;br /&gt;
** illegal_equipment: error mapping for MAP error ''illegalEquipment''.&lt;br /&gt;
** ussd_busy: error mapping for MAP error ''ussd-Busy''.&lt;br /&gt;
** call_barred: error mapping for MAP error ''callBarred''.&lt;br /&gt;
** network_failure: error signaling message transmission failure due to  connectivity issues either on the SS7 side or SMPP side.&lt;br /&gt;
** timeout_expired: error signaling a  request timeout occurrence.&lt;br /&gt;
** ussd_sess_end_abnormally: error signaling USSD session termination due to an unknown cause. Mapping for this error implies a TCAP Abort either being generated of received. &lt;br /&gt;
** unknown_error: error specified when there is no available mapping for an errror from SMPP to MAP or vice versa.&lt;br /&gt;
** throttling_error: error signaling that a message failed to be processed due to processing side being in congestion state.&lt;br /&gt;
** protocol_error: SMPP generic error. This error is put whenever there is a SMPP specific error that cannot be mapped into one of the other errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== SMPP custom parameters ====&lt;br /&gt;
&lt;br /&gt;
* 0x1502 =&amp;gt; IMSI;&lt;br /&gt;
* 0x1503 =&amp;gt; VLR Type of Number;&lt;br /&gt;
* 0x1504 =&amp;gt; VLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1505 =&amp;gt; VLR address;&lt;br /&gt;
* 0x1506 =&amp;gt; GSM SCF Type of Number;&lt;br /&gt;
* 0x1507 =&amp;gt; GSM SCF Numbering Plan Indicator;&lt;br /&gt;
* 0x1508 =&amp;gt; GSM_SCF address;&lt;br /&gt;
* 0x1509 =&amp;gt; Destination Reference Type of Number;&lt;br /&gt;
* 0x150a =&amp;gt; Destination Reference Numbering Plan Indicator;&lt;br /&gt;
* 0x150b =&amp;gt; Destination Reference;&lt;br /&gt;
* 0x150c =&amp;gt; MSISDN&lt;br /&gt;
* 0x150d =&amp;gt; Alerting Pattern&lt;br /&gt;
* 0x1800 =&amp;gt; HLR Type of Number;&lt;br /&gt;
* 0x1801 =&amp;gt; HLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1802 =&amp;gt; HLR address.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
==== ysigchan module ====&lt;br /&gt;
&lt;br /&gt;
In order to have MAP connectivity, TCAP instances must be configured in ''ysigchan.conf'': &lt;br /&gt;
&lt;br /&gt;
 ; Example of a SS7 Transaction Capabilities Application Part&lt;br /&gt;
 ; This component is created when encountering a section of this kind&lt;br /&gt;
 ;[ss7tcap]&lt;br /&gt;
 ; type: keyword: identifies the component as a SS7 Transfer Capabilities Application Part&lt;br /&gt;
 ; type = ss7-tcap-ansi for ANSI TCAP&lt;br /&gt;
 ; type = ss7-tcap-itu for ITU TCAP&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; local_SSN: local SubSystem Number. Mandatory&lt;br /&gt;
 ;local_SSN=&lt;br /&gt;
 &lt;br /&gt;
 ; default_remote_SSN: remote SubSystem Number to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_SSN=&lt;br /&gt;
  &lt;br /&gt;
 ; default_remote_pointcode: remote Point Code to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_pointcode=&lt;br /&gt;
 &lt;br /&gt;
 ; pointcodetype: remote Point Code type. See above documentation for available types&lt;br /&gt;
 ;pointcodetype=&lt;br /&gt;
 &lt;br /&gt;
 ; sccp: Name of the SCCP component to create and be used by this TCAP&lt;br /&gt;
 ; A section with the name given here must exist in order to configure the SCCP level&lt;br /&gt;
 ;sccp=&lt;br /&gt;
 &lt;br /&gt;
 ; default_hopcounter: HopCounter provided to SCCP if the application does not provide one&lt;br /&gt;
 ; Values range 1-15, 0 or boolean false disables, boolean true sets to 15&lt;br /&gt;
 ; A non-zero value will force using XUDT or LUDT instead of UDT messages&lt;br /&gt;
 ;default_hopcounter=false&lt;br /&gt;
 &lt;br /&gt;
 ; transact_timeout: Time in seconds to timeout a TCAP transaction after no more activity was registered on it&lt;br /&gt;
 ; NOTE: Values below 15 seconds will be ignored and the timer will assume the default value.&lt;br /&gt;
 ; Defaults to 300 seconds&lt;br /&gt;
 ;transact_timeout=300&lt;br /&gt;
 &lt;br /&gt;
 ; max_timeout_checks: integer: Maximum number of timeout checks done on a transaction without starting the transaction&lt;br /&gt;
 ;  timer before forcefully starting the transaction timer&lt;br /&gt;
 ; Defaults to 10&lt;br /&gt;
 ;max_timeout_checks=10 &lt;br /&gt;
 &lt;br /&gt;
 ; timeout_check: Time interval in milliseconds to check for timeouts.&lt;br /&gt;
 ; Default to 100 ms&lt;br /&gt;
 ;timeout_check=100 &lt;br /&gt;
 &lt;br /&gt;
 ; floodevents: int: How many queued incoming TCAP messages trigger a congestion warning and the drop mechanism&lt;br /&gt;
 ;  for Unidirectional/Begin/QueryWithPermission/QueryWithoutPermission messages.&lt;br /&gt;
 ;  Exit from congestion will take place when there are less the floodevents/4 messages in the queue&lt;br /&gt;
 ; NOTE! Setting this parameter to 0 will disable the congestion warning and protection. Setting it to one will &lt;br /&gt;
 ;  be overriden and floodevents will be set to 2.&lt;br /&gt;
 ;floodevents=1000&lt;br /&gt;
 &lt;br /&gt;
 ;print-messages: Boolean to enable/disable printing of decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ;extended-debug: Boolean to enable/disable printing of the step-by-step decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload. print-messages must be true.&lt;br /&gt;
 ;extended-debug=false&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for keeping the list of current transactions&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
 [tcap-scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=147                                                                                                                                &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                     &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap-hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=7                                                                                                                                  &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Further configuration for SS7 connectivity is required (SCCP, MTP3, etc.).&lt;br /&gt;
&lt;br /&gt;
==== camel_map module ====&lt;br /&gt;
&lt;br /&gt;
Configuring of tracking IDs is done in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ;track_id: string: Shared engine variable name used to obtain a unique tracking ID for TCAP transactions&lt;br /&gt;
 ; If not set, the module will not set a tracking ID for the TCAP transaction&lt;br /&gt;
 ;track_id=&lt;br /&gt;
 &lt;br /&gt;
 ;track_id_base: string: Optional string with which to prefix the tracking ID&lt;br /&gt;
 ; This setting has no effect if track_id is not set&lt;br /&gt;
 ;track_id_base=&lt;br /&gt;
&lt;br /&gt;
In order to allow communication over MAP through SS7, sections configurating application should exist for each role of the ussd_map module (gsmSCF/HLR). A ''camel_map.conf'' section configuring an application looks like this:&lt;br /&gt;
 &lt;br /&gt;
 ;[local appName]&lt;br /&gt;
 ; This section configures a local application which transmits the XML messages as internal Yate messages&lt;br /&gt;
 &lt;br /&gt;
 ; translator: string: name of translator to be used by this application.&lt;br /&gt;
 ; Must be one one the [tcap ...] sections configured in the camel_map.conf file.&lt;br /&gt;
 ;translator=&lt;br /&gt;
  &lt;br /&gt;
 ; capabilities: string: List of capabilities separated by commas which this application supports&lt;br /&gt;
 ;capabilities=&lt;br /&gt;
  &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into a Yate message&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - string: pass the XML as a string&lt;br /&gt;
 ;  - object: pass the XML as an object&lt;br /&gt;
 ;  - both: pass the XML as a string and object&lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; enable: bool: Enable this application&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
&lt;br /&gt;
The translator setting refers to a section of the type defined below which configures atachement to a TCAP instance&lt;br /&gt;
&lt;br /&gt;
 ;[tcap map]&lt;br /&gt;
 ; This section configures a TCAP User MAP/CAMEL protocol translator&lt;br /&gt;
 &lt;br /&gt;
 ; enable: bool: Enable this translator&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of TCAP User &lt;br /&gt;
 ; Allowed values are MAP or CAMEL&lt;br /&gt;
 ;type=MAP&lt;br /&gt;
 &lt;br /&gt;
 ; host: IP address: Address on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ;host=127.0.0.1 &lt;br /&gt;
 &lt;br /&gt;
 ; port: integer: Port on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ; Note: setting port to 0 will disable the listener, so it will not accept TCP applications&lt;br /&gt;
 ;port=5555&lt;br /&gt;
 &lt;br /&gt;
 ; tcap: string: Name of TCAP to which this TCAP user should attach itself to for the SS7 communication&lt;br /&gt;
 ;tcap=&lt;br /&gt;
 &lt;br /&gt;
 ; add-encoding: bool: Always add encoding attribute to XML elements for decoded parameters&lt;br /&gt;
 ;add-encoding=default from [general]&lt;br /&gt;
 &lt;br /&gt;
 ; add-timestamp: bool: Add to XML timestamps used for estimating application latency&lt;br /&gt;
 ;add-timestamp=default from [general] &lt;br /&gt;
 &lt;br /&gt;
 ; print-messages: bool: Debug option to print TCAP and XML messages. This option is applicable on reload.&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-string: string: Specifies what the ussd-String parameter will contain as data&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - octets: ussd-String will contain the octets as they were received&lt;br /&gt;
 ;  - text: ussd-String will contain the GSM7Bit decoded text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-string=text&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-decode: string: Specifies what ussd-String parameters should be decoded into text&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - none: ussd-String parameters will never be decoded into text&lt;br /&gt;
 ;  - first: ussd-String in a TCAP Begin message will be decoded into text&lt;br /&gt;
 ;  - all: all ussd-String parameters will be decoded into text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-decode=all&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for mapping of TCAP transactions to applications&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For load sharing (especially in cases of high loads), you can configure multiple applications using the same translator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 applications acting as a gsmSCF, each one attached to the TCAP instance with gsmSCF SSN, and 2 applications as HLR, each one attached to the TCAP instance with HLR SSN 6:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 track_id=ussdgw&lt;br /&gt;
 track_id_base=ussdgw/&lt;br /&gt;
 &lt;br /&gt;
 [tcap scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-scf                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false                                                                                                                           &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-hlr                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false   &lt;br /&gt;
 &lt;br /&gt;
 [local ussdscf1]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all                                                                                                                            &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [local ussdscf2]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all               &lt;br /&gt;
 &lt;br /&gt;
 [local ussdhlr1]&lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all                                                                                                                            &lt;br /&gt;
 &lt;br /&gt;
 [local ussdhlr2]                                                                                                                             &lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=all&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
The module is configured through ''ussd_map.conf''. The configuration file sets timeout parameters and processing threads parameters in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList for keeping dialogs&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
 &lt;br /&gt;
 ; component_ttl: integer: Component time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; Defaults to 600000 (10 minutes)&lt;br /&gt;
 ;component_ttl=600000&lt;br /&gt;
 &lt;br /&gt;
 ; dialog_idle_ttl: integer: Dialog idle (nothing sent/received) time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; It can be set to 0 to keep it alive until the remote party terminates the dialog&lt;br /&gt;
 ; Defaults to 86400000 (1 day)&lt;br /&gt;
 ;dialog_idle_ttl=86400000&lt;br /&gt;
&lt;br /&gt;
 ; dialog_ended_ttl: integer: Ended dialog time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000.&lt;br /&gt;
 ; It can be set to 0 to remove the dialog after termination&lt;br /&gt;
 ; Defaults to 0&lt;br /&gt;
 ;dialog_ended_ttl=0&lt;br /&gt;
 &lt;br /&gt;
 ; dispatcher_maxthreads: integer: Maximum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ; NOTE: if the value is set to 0, the module will enqueue the messages into YATE's engine.&lt;br /&gt;
 ;dispatcher_maxthreads=0&lt;br /&gt;
&lt;br /&gt;
 ; dispatcher_minthreads: integer: Minimum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ;dispatcher_minthreads=1&lt;br /&gt;
&lt;br /&gt;
 ;dispatcher_priority: string: Default priority of message dispatch threads&lt;br /&gt;
 ;dispatcher_priority=normal&lt;br /&gt;
&lt;br /&gt;
 ; floodevents: integer: Threshold for signaling congestion when the number of messages waiting to be dispatched exceeds it.&lt;br /&gt;
 ; When entering congestion, all new MAP dialogs and USSD sessions will be refused.&lt;br /&gt;
 ; 0 disables the mechanism&lt;br /&gt;
 ;floodevents=0&lt;br /&gt;
&lt;br /&gt;
 ; congestion_exit_factor: double: Factor used to calculate the exit congestion threshold&lt;br /&gt;
 ; NOTE: if the factor results in a exit congestion threshold of 0 or greater than floodevents, &lt;br /&gt;
 ; the setting will be overriden and the exit congestion threshold will be set to 1.&lt;br /&gt;
 ;congestion_exit_factor=0.5&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Timeout settings should be correlated with timeout settings in TCAP and SMPP, each having its own timeout mechanism.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gateway applications which do the MAP &amp;lt;-&amp;gt; USSD translation are configured through section like the one below:&lt;br /&gt;
&lt;br /&gt;
 [appName]&lt;br /&gt;
 ; section name is the name of the camel_map application, it must correspond to a [local appName] section in camel_map &lt;br /&gt;
&lt;br /&gt;
 ; enable: boolean: Enable this application&lt;br /&gt;
 ; Defaults to yes&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of MAP &amp;lt;-&amp;gt; USSD translator: &lt;br /&gt;
 ;  - SCF means that is the part that receives new dialogs from the HLR (user initiated USSD)&lt;br /&gt;
 ;  - HLR is the part that receives new dialogs from gsmSCF (network initiated USSD)&lt;br /&gt;
 ; This setting cannot be changed on reload.&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into &lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; print_msg: boolean: Print sent/received messages to output&lt;br /&gt;
 ;print_msg=no&lt;br /&gt;
  &lt;br /&gt;
 ; print_xml: boolean: Print sent/received XML data to output&lt;br /&gt;
 ;print_xml=no&lt;br /&gt;
 &lt;br /&gt;
 ; local_addr. : prefix: Parameters prefixed with this set the local SCCP address of this application &lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; local_addr.CallingPartyAddress.route=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.ssn=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.pointcode=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.nature=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.plan=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.translation=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.encoding= &lt;br /&gt;
 &lt;br /&gt;
 ; default_routing: bool : Do routing to default address for all messages&lt;br /&gt;
 ; default_routing=no&lt;br /&gt;
 &lt;br /&gt;
 ; default_addr. : prefix: parameters prefixed with this will be used as the default SCCP called address&lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; default_addr.application=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.route=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.ssn=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.pointcode=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.nature=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.translation=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.encoding=&lt;br /&gt;
 &lt;br /&gt;
 ; hlr_ssn: integer: The SSN expected in the calling address from a HLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;hlr_ssn=6&lt;br /&gt;
 &lt;br /&gt;
 ; vlr_ssn: integer: The SSN expected in the calling address from a VLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;vlr_ssn=7&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each section should have its own equivalent in ''camel_map.conf''.&lt;br /&gt;
In the USSD GW scenario, at least tho applications are needed, one acting as SCF, one as HLR. For load sharing multiple gsmSCF and HLR applications can be configured (see the configuration example below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 gsmSCF applications and 2 HLR applications, each one corresponding with a application section in the ''camel_map.conf'' example:&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 component_ttl=600000                                                                                                                         &lt;br /&gt;
 dialog_ended_ttl=0                                                                                                                           &lt;br /&gt;
 dispatcher_maxthreads=10                                                                                                                     &lt;br /&gt;
 dispatcher_minthreads=5                                                                                                                      &lt;br /&gt;
 ;dispatcher_priority=normal                                                                                                                  &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [ussdSCF1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
&lt;br /&gt;
 [ussdSCF2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
 &lt;br /&gt;
 [ussdHLR1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                         &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd                                                                                              &lt;br /&gt;
                                                   &lt;br /&gt;
 [ussdHLR2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
TODO - configuration explanations&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example''''&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
 server=smpp-server                                                                                                                           &lt;br /&gt;
 track_id=ussdgw                                                                                                                              &lt;br /&gt;
 track_id_base=ussdgw/                                                                                                                        &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [smpp-server]                                                                                                                                &lt;br /&gt;
 enable=true                                                                                                                                  &lt;br /&gt;
 session_responseinterval=600000                                                                                                              &lt;br /&gt;
 sessionset_process_max=1                                                                                                                     &lt;br /&gt;
 codec_warndefaults=false                                                                                                                     &lt;br /&gt;
 print-messages=no                                                                                                                            &lt;br /&gt;
                                                                                                                                            &lt;br /&gt;
 [listenerserver server]                                                                                                                      &lt;br /&gt;
 ;enable=yes                                                                                                                                  &lt;br /&gt;
 addr=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=12345    &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Monitoring ===&lt;br /&gt;
&lt;br /&gt;
This section details comands through which the state of the USSD GW can be monitored.&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
* '''Congestion state monitoring'''&lt;br /&gt;
&lt;br /&gt;
The ''ussd_map'' module will generate an alarm when entering/exiting a congestion state. If SNMP support is enabled, this will generate a trap on SNMP.&lt;br /&gt;
The congestion status is also reported in the ''state'' entry in the result of the module status command.&lt;br /&gt;
&lt;br /&gt;
* '''Module status'''&lt;br /&gt;
&lt;br /&gt;
The module reports its status through the following command in the YATE telnet console:&lt;br /&gt;
&lt;br /&gt;
 status ussd_map&lt;br /&gt;
&lt;br /&gt;
The command will print the following information:&lt;br /&gt;
&lt;br /&gt;
 workers=count_of_dispatching_threads,messages=count_msg,dialogs=count_of_dialogs,state=normal,count=count_of_applications;format=Type | CurrentDlgs| MAPCreated | UssdCreated |DefaultRouted | MAPSent | MapRecv | USSDSent | USSDRecv | MAPAbort | USSDAbort | BuiltAbort | MAPTimeouts | USSDTimeouts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
* workers: current number of used dispatching threads from the maximum configured pool (e.g., 3/10 means 3 threads are used of a pool of 10)&lt;br /&gt;
* messages: count of messages waiting on the dispatching queue of the engine&lt;br /&gt;
* dialogs: total number of USSD sessions currently handled by all applications&lt;br /&gt;
* state of the engine: normal/congestion&lt;br /&gt;
* count: number of applications acting either as gsmSCF, either as HLR&lt;br /&gt;
* format: name of the application for which the following data is reported:&lt;br /&gt;
** Type: role of the application: SCF (communicates with real HLR), HLR (communicates with real gsmSCF)&lt;br /&gt;
** CurrentDlgs: number of current MAP dialogs handled by this application&lt;br /&gt;
** MAPCreated: number of sessions (dialogs) started by the MAP side&lt;br /&gt;
** UssdCreated: number of sessions (dialogs) started by the SMPP side&lt;br /&gt;
** DefaultRouted: number of dialogs for which failover took place&lt;br /&gt;
** MAPSent: number of MAP messages sent to gsmSCF/HLR. It doesn't count the ones sent via failover routing.&lt;br /&gt;
** MAPRecv: number of MAP messages received from gsmSCF/HLR&lt;br /&gt;
** USSDSent: number of sent ussd.execute/ussd.update/ussd.finalize messages towards the SMPP side.&lt;br /&gt;
** USSDRecv: number of received ussd.execute/ussd.update/usdd.notify messages from SMPP side.&lt;br /&gt;
** MAPAbort: number of dialog aborts generated by MAP side&lt;br /&gt;
** USSDAbort: number of dialog aborts generated by USSD side&lt;br /&gt;
** BuiltAbort: number of dialog aborts generated by the ussd_map module (e.g., not having a ussd.update message processed by anyone will cause ussd_map to generate session abort)&lt;br /&gt;
** MAPTimeouts: number of dialog timeouts generated by MAP side&lt;br /&gt;
** USSDTimeouts: number of timeouts reported by USSD side&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Module control commands'''&lt;br /&gt;
&lt;br /&gt;
The module offers the following control commands through the telnet console:&lt;br /&gt;
* ''control ussd_map appName print-msg [yes|no|verbose]'' : enable printing of received/sent map./ussd./messages.&lt;br /&gt;
* ''control ussd_map appName print-xml [yes|no|verbose]'' : enable printing of received/sent XMLs.&lt;br /&gt;
* ''control ussd_map appName export-xml-as [string|object|both]'' : change the way XML is set in the internal messages&lt;br /&gt;
* ''control ussd_map start_stats'' : begin gathering data for statistics&lt;br /&gt;
* ''control ussd_map stop_stats'' : stop gathering data for statistics&lt;br /&gt;
* ''control usdd_map stats'' : print statistic data per engine and each application in part. Data contains number of MAP messages handled per second, number of USSD messages handled per second, maximum number of current dialogs, number of timeouts and number of aborts.&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
The ysmpp module provides the following options for status command:&lt;br /&gt;
&lt;br /&gt;
'NOTE' the module_name can take the following values: smppserver or smppclient.&lt;br /&gt;
&lt;br /&gt;
* status module_name listeners&lt;br /&gt;
Prints the module listeners status in format: Address|Status|Reason.&lt;br /&gt;
&lt;br /&gt;
* status module_name sessions&lt;br /&gt;
Prints the status of the sessions in format: Id|State|BindMode|SystemId|IpAddress:Port|Congested|Incoming Queue|Outgoing Queue;&lt;br /&gt;
&lt;br /&gt;
** Id: The ID of the SMPP session. Can be used for routing.&lt;br /&gt;
** State: The state of the SMPP session.&lt;br /&gt;
** BindMode: The mode in which the session was bound. (Send/Recv/SendRecv)&lt;br /&gt;
** SystemId: The id with which the session has been authenticated. Can be used in routing.&lt;br /&gt;
** IpAddress:Port: The Ip Address and port of the remote end of the session.&lt;br /&gt;
** Congested: True if this session is in congestion state.&lt;br /&gt;
** Incoming Queue: The number of messages not processed in the incoming queue.&lt;br /&gt;
** Outgoing Queue: The number of messages not processed in the outgoing queue.&lt;br /&gt;
&lt;br /&gt;
*status module_name ussd overview&lt;br /&gt;
Prints the stats of the USSD sessions in format: Total|Active|Average Duration|Total Sent|Total Received|AverageTrafficPerSecond|EndedWithErrors|CongestionRefused&lt;br /&gt;
&lt;br /&gt;
** Total: the number of USSD sessions created since the starting of the program.&lt;br /&gt;
** Active: the number of USSD sessions currently active.&lt;br /&gt;
** Average Duration: average duration of a ussd session.&lt;br /&gt;
** Total Sent: total number of SMPP messages sent for USSD sessions.&lt;br /&gt;
** Total Received: total number of SMPP messages received for USSD sessions.&lt;br /&gt;
** AverageTrafficPerSecond: average traffic per second for USSD sessions.&lt;br /&gt;
** EndedWithErrors: the number of USSD sessions that ended with error.&lt;br /&gt;
** CongestionRefused: the number of USSD sessions refused because the server was overloaded.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* Mobile Application Part (MAP) specification: ETSI TE 129 002&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/USSD_GW</id>
		<title>USSD GW</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/USSD_GW"/>
				<updated>2014-02-06T15:51:07Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: /* ussd.finalize */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an implementation an USSD gateway acting as a MAP Service Control Function (gsmSCF) and as a HLR at the same time. When communicating with a HLR or VLR, the YATE USSD GW acts as a gsmSCF. When communicating with a gsmSCF, the YATE USSDGW acts as a HLR.&lt;br /&gt;
The functionality of the USSD GW allows:&lt;br /&gt;
* redirecting of USSD requests arriving either from user side or gsmSCF side to a SMPP client where they can be altered.&lt;br /&gt;
* acting as a proxy for requests that need not be handled by SMPP clients or when the SMPP handling fails&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MAP USSD description ==&lt;br /&gt;
&lt;br /&gt;
In versions 2 and 3 of the GSM MAP protocol there are 3 operations used for USSD operations:&lt;br /&gt;
* processUnstructedSS-Request&lt;br /&gt;
* unstructuredSS-Request&lt;br /&gt;
* unstrusturedSS-Notify&lt;br /&gt;
&lt;br /&gt;
The are 2 scenarios for USSD operations:&lt;br /&gt;
* mobile initiated USSD requests&lt;br /&gt;
* network initiated USSD requests&lt;br /&gt;
&lt;br /&gt;
A TCAP dialog used by USSD is always terminated by the network side.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mobile initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobile initiated USSD requests are USSD requests started by the mobile subscriber.  &lt;br /&gt;
&lt;br /&gt;
A USSD request is started when receiving a TCAP BEGIN message containing the ''processUnstructedSS-Request'' Invoke operation. The request can be handled by the VLR, HLR or a gsmSCF. If the VLR does not handle the request, it will transmit it to the HLR. The HLR can either handle it itself or it can transmit it to a gsmSCF for handling.&lt;br /&gt;
&lt;br /&gt;
At this point, the network can either send a response to the request immediately or request additional information. In the first case, the handler of the request will send a TCAP End with ''processUnstructuredSS-Request'' ResultLast containing the result for the request. &lt;br /&gt;
In the latter case, the network will send a TCAP CONTINUE with ''unstructuredSS-Request'' Invoke operation. The response of the mobile subscriber to this request will be passed to the network in a TCAP CONTINUE with ''unstructuredSS-Request'' ResultLast component. At this point, if the network decides that it has enough information for providing the response to the user, it will send a TCAP END with ''processUnstructuredSS-Request'' ResultLast. Otherwise, it can request further information through another ''unstructuredSS-Request'' Invoke operation.&lt;br /&gt;
&lt;br /&gt;
=== Network initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD requests are USSD requests started by the network towards a certain subscriber.&lt;br /&gt;
&lt;br /&gt;
Requests made by the network can be of one of two types:&lt;br /&gt;
* user interaction requests&lt;br /&gt;
* network notification requests.&lt;br /&gt;
&lt;br /&gt;
User interaction requests are USSD requests that the network makes in which it requires some type of information back from the mobile subscriber. These are started by the network through a TCAP BEGIN containing an ''unstructuredSS-Request'' Invoke. The answer from the mobile subscriber will be received in a TCAP CONTINUE containing an ''unstructuredSS-Request'' ResultLast. If the network still wants to request further information, it will repeat the process. Otherwise, it will send a TCAP END to close the TCAP dialog.&lt;br /&gt;
&lt;br /&gt;
Network notification requests are USSD requests in which the network only sends a notification to the user. This is achieved by sending a TCAP BEGIN message containing a ''unstructuredSS-Notify'' Invoke. The mobile subscriber side will only respond with a TCAP CONTINUE containing an empty ''unstructuredSS-Notify'' in order to signal that the notification was received. The network will close the TCAP dialog through TCAP END.&lt;br /&gt;
&lt;br /&gt;
=== MAP USSD parameters ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following list describe common parameters used across all MAP USSD operations:&lt;br /&gt;
* ''destinationReference'': this parameter will contain either an MSISDN or an IMSI. In the case of mobile originated USSD request, this will identify the user which made the request. In the case of network initiated requests, it will identify the mobile user to be contacted for this request.&lt;br /&gt;
* ''ussd-String'': for ''processUnstructuredSS-Request'' Invoke it contains the dialed USSD code, for the result it would probably contain a message from the network detailing the result of the request. For ''unstructuredSS-Request'' Invoke it will contain a message asking for the user to choose some option and for the result it will contain the option chosen by the user. In the case of ''unstructuredSS-Notify'', this parameter will only be present in the Invoke.&lt;br /&gt;
* ''ussd-DataCodingScheme'': this is a parameter which specifies in which way the ''ussd-String'' parameter is encoded and it is present whenever ''ussd-String'' is present. E.g., this parameter would indicate if the ''ussd-String'' is encoded using GSM7bit encoding or UCS2.&lt;br /&gt;
&lt;br /&gt;
== SMPP USSD description ==&lt;br /&gt;
&lt;br /&gt;
'''TO DO'''&lt;br /&gt;
&lt;br /&gt;
== System description ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== System design ===&lt;br /&gt;
&lt;br /&gt;
In order to provide the specified functionality, the system makes use of the following YATE components:&lt;br /&gt;
* the SS7 stack  present in YATE &lt;br /&gt;
* the camel_map module which decodes/encodes MAP messages coming from the SS7 network to/from internal YATE messages containing MAP operations in XML form. Together with the SS7 layer this provides MAP connectivity with HLR/gsmSCF.&lt;br /&gt;
* the ussd_map module which takes internal MAP messsages decoded by the camel_map moduled and translates them to internal USSD messages. This module acts as gsmSCF towards a HLR and as a HLR towards a gsmSCF.&lt;br /&gt;
* the SMPP stack present in YATE (ysmpp module) which is able to catch internal USSD messages and transmit them over SMPP. It also translates SMPP messages into internal USSD messages.&lt;br /&gt;
* requests for new USSD sessions will go through routing to decide who should handle the request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following sections detail the behaviour of the system in the different USSD scenarios.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mobile originated USSD handling ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A user initiated USSD session is handled according to the following schema:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# HLR sends a ''processUnstructuredSS-Request (Invoke)'' for code *100#. camel_map decodes the ''ussd-String'' into ''ussd-Text=*100#''.&lt;br /&gt;
# the ussd_map module (gsmSCF side) processes the request received from the HLR and emits a ''call.route'' message with ''called=*100#''.&lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with the ''callto'' parameter set to the value returned from routing. ussd_map dispatches the ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will send  it to the target specified in ''callto'' parameter after the module prefix ''ysmppserver/''.&lt;br /&gt;
# The ysmpp module receives and process the received ''submit_sm'' message.&lt;br /&gt;
# The ysmpp module will send a ''call.route'' message with the ''called=*100#''.&lt;br /&gt;
# The ysmpp module emits a ''ussd.execute'' message with ''callto=retvalue from call.route'' message.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ussd.execute message and if it is the target of the message, meaning that ''callto'' starts with ''ussd_map/''. From that message it will build a map.message that it will send to the gsmSCF as a ''processUnstructuresSS-Request (Invoke)'' MAP message.&amp;lt;br&amp;gt;'''NOTE:''' From here on, the gsmSCF could handle the request in one of  two distinguished cases: one where the gsmSCF requires interaction with the mobile subscriber and one where the gsmSCF just needs to respond to the user request. The following steps detail the former case.&amp;lt;br&amp;gt;&lt;br /&gt;
# gsmSCF sends an ''unstructuredSS-Request (Invoke)'' to  request further information.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits an ''ussd.update'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.update'' message and confirms to the SMPP client that the message sent in step 5 was processed.&lt;br /&gt;
# The SMPP client should confirm the processing of the SMPP message sent in step 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver_sm'' message to the SMPP client with the menu received in ''ussd.update'' message.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message with the received menu.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message from SMPP client and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.update'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time in which the mobile subscribers responds can be quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway when receiving the response from the mobile subscriber.&lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 13.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 21.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 9 and 24 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''processUnstructuredSS-Request (ResultLast)''  for the initial user request.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''processUnstructuredSS-Request (ResultLast)'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 22 or 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 21 or 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 31.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 29.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''processUnstructuredSS-Request (ResultLast)''.&lt;br /&gt;
&lt;br /&gt;
==== Network initiated USSD Request ====&lt;br /&gt;
&lt;br /&gt;
A network initiated USSD session is handled as described in the following figure:&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
# gsmSCF sends''unstructuredSS-Request (Invoke)'' to USSD Gateway (HLR part) to present a menu for MSISDN 0015559191.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits a ''call.route'' message with called=0015559191. &lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with ''callto'' set to the route returned in the return value of the ''call.route'' message and dispatches an ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will then send to the target specified in the ''callto'&amp;quot; parameter after the ''ysmppserver'' module prefix.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message towards SMPP server.&lt;br /&gt;
# The SMPP server processes the received ''submit_sm'' message and dispatches a ''call.route'' message.&lt;br /&gt;
# After successfully dispatching of ''call.route'' message the SMPP server will dispatch a ''call.execute'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.execute'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time to receiving a response from the user after gsmSCF has requested user interaction could be possibly quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway &lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 4.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 13.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 1 and 16 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''TCAP END'' in order to finish the USSD session.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''TCAP END'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 13.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 22.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 21.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''END''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fallback/Proxy mode ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following images detail scenarios where the USSD GW is instructed to do failover.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when an HLR sends ''processUnstructuredSS-Request (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:''' &lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message. &lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD session fallback.&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when a gsmSCF sends a &amp;quot;unstructuredSS-Request/unstructuredSS-Notify (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:'''&lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message.&lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The SMPP USSD gateway will also be bypassed when the ''ussd_map'' module is configured to do failover for all requests.&lt;br /&gt;
&lt;br /&gt;
Any type of SMPP error received either in the result for the ''ussd.execute'' or in the first message back from SMPP that does not have a mapping on MAP will lead to the ''ussd_map'' module doing failover. Errors that would generate a failover are errors like timeout, session ended abnormally, unknown errors, congestion errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once ''ussd_map'' decides that failover should be done, it will use the original received message  from the HLR (MO case)/gsmSCF (MT case) and it will only alter the called address to be the one of the gsmSCF/HLR set for the failover.. The calling address will remain the one received from HLR/gsmSCF, the idea being that for the first message we want to pretend that we are the original gsmSCF/HLR. When the receiving end of this message will want to respond, it will use the calling address from the message. Seeing that the ''ussd_map'' module set it to the original calller's address, further messages exchanged in that dialog between HLR and gsmSCF will not pass through USSD GW again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Internal message API ====&lt;br /&gt;
&lt;br /&gt;
This section documents the YATE messages used internally by the USSD GW.&lt;br /&gt;
&lt;br /&gt;
===== call.route =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used by ussd_map and ysmpp module to determine a destination where a new USSD session should be sent for further processing.&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module when receiving a request for a new USSD session on MAP for ''ussd_map'' or on SMPP for ''ysmpp''.&lt;br /&gt;
''ussd_map'' will only send this message if default routing is not enabled from configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
* module&lt;br /&gt;
** type: string &lt;br /&gt;
** Name of the module which requested routing&lt;br /&gt;
* application&lt;br /&gt;
** type: string&lt;br /&gt;
** Name of the ussd_map application which sent this routing request&lt;br /&gt;
* route_type&lt;br /&gt;
** type: keyword, value: ussd &lt;br /&gt;
** Specifies routing type, in this case it'll be USSD routing&lt;br /&gt;
* smpp_session_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
* smpp_system_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* if the message was processed, the return value of the message indicates the destination of the subsequent ''ussd.execute'' message.&lt;br /&gt;
* if the message was not processed or it returned with error (signaled by the return value being either &amp;quot;-&amp;quot; or &amp;quot;error&amp;quot;)&lt;br /&gt;
** ''ussd_map'' will do failover&lt;br /&gt;
** ysmpp will close the SMPP session, indicating an error either set by the call.route or either set to the default unknown error indication.&lt;br /&gt;
&lt;br /&gt;
===== ussd.execute =====&lt;br /&gt;
&lt;br /&gt;
This message is used to begin a new USSD session:&lt;br /&gt;
* on SMPP, if the message is directed to the ''ysmpp'' module&lt;br /&gt;
* on MAP if the message is directed to the ''ussd_map'' module&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module after successful routing stage. In case of the ''ussd_map'' module, this is message is sent if the routing stage did not indicate failover necessity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* callto:  &lt;br /&gt;
** type : string&lt;br /&gt;
** It specifies the target module to process the message. The string should start with  'ysmppserver/' for the  ''ysmpp&amp;quot; module and with ''ussd_map/'' for the ''ussd_map'' module.&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier assigned for this USSD session by the entity that processed this message.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error returned if the message was not processed.&lt;br /&gt;
&lt;br /&gt;
Processing of this message will return failure:&lt;br /&gt;
* if the message will not be processed&lt;br /&gt;
* if the 'id' parameter is missing.&lt;br /&gt;
* in case of processing error &lt;br /&gt;
* in case of congestion&lt;br /&gt;
&lt;br /&gt;
===== ussd.update =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used for transmitting USSD messages during a USSD session. This type of message will be used after the initial stage of creating the session through ''ussd.execute'' has succeeded.&lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP CONTINUE message &lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will be refused if it is received after a ''ussd.finalize'' message.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a values not allowed in the context of the USSD session (e.g., sending a ''processUnstructuredSS-Request inside a ''ussd.update'' message)&lt;br /&gt;
&lt;br /&gt;
===== ussd.finalize =====&lt;br /&gt;
&lt;br /&gt;
This message is used to signal the termination of the USSD session. Successful processing of this message means that the USSD session was terminated and is no longer available. &lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP END/ABORT message depending upon the parameters received. A message containing an error that does not map to a MAP error will generate a TCAP ABORT.&lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client, a message that will usually contain a last message indication.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by 'peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a value not allowed in the context of the USSD session&lt;br /&gt;
&lt;br /&gt;
===== Keyword values =====&lt;br /&gt;
&lt;br /&gt;
This section details acceptable values for parameters listed as having type ''keyword''.&lt;br /&gt;
&lt;br /&gt;
* '''hlr.nature/vlr.nature/gsmscf.nature/destination_reference.nature'''&lt;br /&gt;
** unknown&lt;br /&gt;
** international&lt;br /&gt;
** national&lt;br /&gt;
** network-specific&lt;br /&gt;
** subscriber&lt;br /&gt;
** abbreviated&lt;br /&gt;
&lt;br /&gt;
* '''hlr.plan/vlr.plan/gsmscf.plan/destination_reference.plan'''&lt;br /&gt;
** unknown&lt;br /&gt;
** isdn&lt;br /&gt;
** data&lt;br /&gt;
** telex&lt;br /&gt;
** land-mobile&lt;br /&gt;
** national&lt;br /&gt;
** private&lt;br /&gt;
&lt;br /&gt;
* '''operation_type'''&lt;br /&gt;
** pssd: mapping of MAP v1 USSD operation ''processUnstructuredSS-Data'' and of SMPP operation ''PSSD''. &lt;br /&gt;
** pssr: mapping of MAP v2 USSD operation ''processUnstructuredSS-Request'' and of SMPP operation ''PSSR''.&lt;br /&gt;
** ussr: mapping of MAP v2 USSD operation ''unstructuredSS-Request'' and of SMPP operation ''USSR&amp;quot;.&lt;br /&gt;
** ussn: mapping of MAP v2 USSD operation ''unstructuredSS-Notify'' and of SMPP operation ''USSN''.&lt;br /&gt;
&lt;br /&gt;
* '''error'''&lt;br /&gt;
** invalid_logic:  error reported when required processing does not follow USSD rules (e.g., MT request starting with ''processUnstructuredSS-Requests'')&lt;br /&gt;
** system_failure: error mapping for MAP error ''systemFailure''.&lt;br /&gt;
** data_missing: error mapping for  MAP error ''dataMissing''.&lt;br /&gt;
** unexpected_data: error mapping for MAP error ''unexpectedDataValue''.&lt;br /&gt;
** unknown_alphabet: error mapping for MAP error ''unknownAlphabet''.&lt;br /&gt;
** absent_subscriber: error mapping for MAP error ''absentSubscriber''.&lt;br /&gt;
** illegal_subscriber: error mapping for MAP error ''illegalSubscriber''.&lt;br /&gt;
** illegal_equipment: error mapping for MAP error ''illegalEquipment''.&lt;br /&gt;
** ussd_busy: error mapping for MAP error ''ussd-Busy''.&lt;br /&gt;
** call_barred: error mapping for MAP error ''callBarred''.&lt;br /&gt;
** network_failure: error signaling message transmission failure due to  connectivity issues either on the SS7 side or SMPP side.&lt;br /&gt;
** timeout_expired: error signaling a  request timeout occurrence.&lt;br /&gt;
** ussd_sess_end_abnormally: error signaling USSD session termination due to an unknown cause. Mapping for this error implies a TCAP Abort either being generated of received. &lt;br /&gt;
** unknown_error: error specified when there is no available mapping for an errror from SMPP to MAP or vice versa.&lt;br /&gt;
** throttling_error: error signaling that a message failed to be processed due to processing side being in congestion state.&lt;br /&gt;
** protocol_error: SMPP generic error. This error is put whenever there is a SMPP specific error that cannot be mapped into one of the other errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== SMPP custom parameters ====&lt;br /&gt;
&lt;br /&gt;
* 0x1502 =&amp;gt; IMSI;&lt;br /&gt;
* 0x1503 =&amp;gt; VLR Type of Number;&lt;br /&gt;
* 0x1504 =&amp;gt; VLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1505 =&amp;gt; VLR address;&lt;br /&gt;
* 0x1506 =&amp;gt; GSM SCF Type of Number;&lt;br /&gt;
* 0x1507 =&amp;gt; GSM SCF Numbering Plan Indicator;&lt;br /&gt;
* 0x1508 =&amp;gt; GSM_SCF address;&lt;br /&gt;
* 0x1509 =&amp;gt; Destination Reference Type of Number;&lt;br /&gt;
* 0x150a =&amp;gt; Destination Reference Numbering Plan Indicator;&lt;br /&gt;
* 0x150b =&amp;gt; Destination Reference;&lt;br /&gt;
* 0x150c =&amp;gt; MSISDN&lt;br /&gt;
* 0x150d =&amp;gt; Alerting Pattern&lt;br /&gt;
* 0x1800 =&amp;gt; HLR Type of Number;&lt;br /&gt;
* 0x1801 =&amp;gt; HLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1802 =&amp;gt; HLR address.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
==== ysigchan module ====&lt;br /&gt;
&lt;br /&gt;
In order to have MAP connectivity, TCAP instances must be configured in ''ysigchan.conf'': &lt;br /&gt;
&lt;br /&gt;
 ; Example of a SS7 Transaction Capabilities Application Part&lt;br /&gt;
 ; This component is created when encountering a section of this kind&lt;br /&gt;
 ;[ss7tcap]&lt;br /&gt;
 ; type: keyword: identifies the component as a SS7 Transfer Capabilities Application Part&lt;br /&gt;
 ; type = ss7-tcap-ansi for ANSI TCAP&lt;br /&gt;
 ; type = ss7-tcap-itu for ITU TCAP&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; local_SSN: local SubSystem Number. Mandatory&lt;br /&gt;
 ;local_SSN=&lt;br /&gt;
 &lt;br /&gt;
 ; default_remote_SSN: remote SubSystem Number to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_SSN=&lt;br /&gt;
  &lt;br /&gt;
 ; default_remote_pointcode: remote Point Code to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_pointcode=&lt;br /&gt;
 &lt;br /&gt;
 ; pointcodetype: remote Point Code type. See above documentation for available types&lt;br /&gt;
 ;pointcodetype=&lt;br /&gt;
 &lt;br /&gt;
 ; sccp: Name of the SCCP component to create and be used by this TCAP&lt;br /&gt;
 ; A section with the name given here must exist in order to configure the SCCP level&lt;br /&gt;
 ;sccp=&lt;br /&gt;
 &lt;br /&gt;
 ; default_hopcounter: HopCounter provided to SCCP if the application does not provide one&lt;br /&gt;
 ; Values range 1-15, 0 or boolean false disables, boolean true sets to 15&lt;br /&gt;
 ; A non-zero value will force using XUDT or LUDT instead of UDT messages&lt;br /&gt;
 ;default_hopcounter=false&lt;br /&gt;
 &lt;br /&gt;
 ; transact_timeout: Time in seconds to timeout a TCAP transaction after no more activity was registered on it&lt;br /&gt;
 ; NOTE: Values below 15 seconds will be ignored and the timer will assume the default value.&lt;br /&gt;
 ; Defaults to 300 seconds&lt;br /&gt;
 ;transact_timeout=300&lt;br /&gt;
 &lt;br /&gt;
 ; max_timeout_checks: integer: Maximum number of timeout checks done on a transaction without starting the transaction&lt;br /&gt;
 ;  timer before forcefully starting the transaction timer&lt;br /&gt;
 ; Defaults to 10&lt;br /&gt;
 ;max_timeout_checks=10 &lt;br /&gt;
 &lt;br /&gt;
 ; timeout_check: Time interval in milliseconds to check for timeouts.&lt;br /&gt;
 ; Default to 100 ms&lt;br /&gt;
 ;timeout_check=100 &lt;br /&gt;
 &lt;br /&gt;
 ; floodevents: int: How many queued incoming TCAP messages trigger a congestion warning and the drop mechanism&lt;br /&gt;
 ;  for Unidirectional/Begin/QueryWithPermission/QueryWithoutPermission messages.&lt;br /&gt;
 ;  Exit from congestion will take place when there are less the floodevents/4 messages in the queue&lt;br /&gt;
 ; NOTE! Setting this parameter to 0 will disable the congestion warning and protection. Setting it to one will &lt;br /&gt;
 ;  be overriden and floodevents will be set to 2.&lt;br /&gt;
 ;floodevents=1000&lt;br /&gt;
 &lt;br /&gt;
 ;print-messages: Boolean to enable/disable printing of decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ;extended-debug: Boolean to enable/disable printing of the step-by-step decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload. print-messages must be true.&lt;br /&gt;
 ;extended-debug=false&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for keeping the list of current transactions&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
 [tcap-scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=147                                                                                                                                &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                     &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap-hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=7                                                                                                                                  &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Further configuration for SS7 connectivity is required (SCCP, MTP3, etc.).&lt;br /&gt;
&lt;br /&gt;
==== camel_map module ====&lt;br /&gt;
&lt;br /&gt;
Configuring of tracking IDs is done in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ;track_id: string: Shared engine variable name used to obtain a unique tracking ID for TCAP transactions&lt;br /&gt;
 ; If not set, the module will not set a tracking ID for the TCAP transaction&lt;br /&gt;
 ;track_id=&lt;br /&gt;
 &lt;br /&gt;
 ;track_id_base: string: Optional string with which to prefix the tracking ID&lt;br /&gt;
 ; This setting has no effect if track_id is not set&lt;br /&gt;
 ;track_id_base=&lt;br /&gt;
&lt;br /&gt;
In order to allow communication over MAP through SS7, sections configurating application should exist for each role of the ussd_map module (gsmSCF/HLR). A ''camel_map.conf'' section configuring an application looks like this:&lt;br /&gt;
 &lt;br /&gt;
 ;[local appName]&lt;br /&gt;
 ; This section configures a local application which transmits the XML messages as internal Yate messages&lt;br /&gt;
 &lt;br /&gt;
 ; translator: string: name of translator to be used by this application.&lt;br /&gt;
 ; Must be one one the [tcap ...] sections configured in the camel_map.conf file.&lt;br /&gt;
 ;translator=&lt;br /&gt;
  &lt;br /&gt;
 ; capabilities: string: List of capabilities separated by commas which this application supports&lt;br /&gt;
 ;capabilities=&lt;br /&gt;
  &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into a Yate message&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - string: pass the XML as a string&lt;br /&gt;
 ;  - object: pass the XML as an object&lt;br /&gt;
 ;  - both: pass the XML as a string and object&lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; enable: bool: Enable this application&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
&lt;br /&gt;
The translator setting refers to a section of the type defined below which configures atachement to a TCAP instance&lt;br /&gt;
&lt;br /&gt;
 ;[tcap map]&lt;br /&gt;
 ; This section configures a TCAP User MAP/CAMEL protocol translator&lt;br /&gt;
 &lt;br /&gt;
 ; enable: bool: Enable this translator&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of TCAP User &lt;br /&gt;
 ; Allowed values are MAP or CAMEL&lt;br /&gt;
 ;type=MAP&lt;br /&gt;
 &lt;br /&gt;
 ; host: IP address: Address on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ;host=127.0.0.1 &lt;br /&gt;
 &lt;br /&gt;
 ; port: integer: Port on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ; Note: setting port to 0 will disable the listener, so it will not accept TCP applications&lt;br /&gt;
 ;port=5555&lt;br /&gt;
 &lt;br /&gt;
 ; tcap: string: Name of TCAP to which this TCAP user should attach itself to for the SS7 communication&lt;br /&gt;
 ;tcap=&lt;br /&gt;
 &lt;br /&gt;
 ; add-encoding: bool: Always add encoding attribute to XML elements for decoded parameters&lt;br /&gt;
 ;add-encoding=default from [general]&lt;br /&gt;
 &lt;br /&gt;
 ; add-timestamp: bool: Add to XML timestamps used for estimating application latency&lt;br /&gt;
 ;add-timestamp=default from [general] &lt;br /&gt;
 &lt;br /&gt;
 ; print-messages: bool: Debug option to print TCAP and XML messages. This option is applicable on reload.&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-string: string: Specifies what the ussd-String parameter will contain as data&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - octets: ussd-String will contain the octets as they were received&lt;br /&gt;
 ;  - text: ussd-String will contain the GSM7Bit decoded text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-string=text&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-decode: string: Specifies what ussd-String parameters should be decoded into text&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - none: ussd-String parameters will never be decoded into text&lt;br /&gt;
 ;  - first: ussd-String in a TCAP Begin message will be decoded into text&lt;br /&gt;
 ;  - all: all ussd-String parameters will be decoded into text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-decode=all&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for mapping of TCAP transactions to applications&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For load sharing (especially in cases of high loads), you can configure multiple applications using the same translator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 applications acting as a gsmSCF, each one attached to the TCAP instance with gsmSCF SSN, and 2 applications as HLR, each one attached to the TCAP instance with HLR SSN 6:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 track_id=ussdgw&lt;br /&gt;
 track_id_base=ussdgw/&lt;br /&gt;
 &lt;br /&gt;
 [tcap scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-scf                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false                                                                                                                           &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-hlr                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false   &lt;br /&gt;
 &lt;br /&gt;
 [local ussdSCF1]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=first                                                                                                                            &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [local ussdSCF2]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=first               &lt;br /&gt;
 &lt;br /&gt;
 [local ussdHLR1]&lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=first                                                                                                                            &lt;br /&gt;
 &lt;br /&gt;
 [local ussdHLR2]                                                                                                                             &lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=first&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
The module is configured through ''ussd_map.conf''. The configuration file sets timeout parameters and processing threads parameters in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList for keeping dialogs&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
 &lt;br /&gt;
 ; component_ttl: integer: Component time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; Defaults to 600000 (10 minutes)&lt;br /&gt;
 ;component_ttl=600000&lt;br /&gt;
 &lt;br /&gt;
 ; dialog_idle_ttl: integer: Dialog idle (nothing sent/received) time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; It can be set to 0 to keep it alive until the remote party terminates the dialog&lt;br /&gt;
 ; Defaults to 86400000 (1 day)&lt;br /&gt;
 ;dialog_idle_ttl=86400000&lt;br /&gt;
&lt;br /&gt;
 ; dialog_ended_ttl: integer: Ended dialog time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000.&lt;br /&gt;
 ; It can be set to 0 to remove the dialog after termination&lt;br /&gt;
 ; Defaults to 0&lt;br /&gt;
 ;dialog_ended_ttl=0&lt;br /&gt;
 &lt;br /&gt;
 ; dispatcher_maxthreads: integer: Maximum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ; NOTE: if the value is set to 0, the module will enqueue the messages into YATE's engine.&lt;br /&gt;
 ;dispatcher_maxthreads=0&lt;br /&gt;
&lt;br /&gt;
 ; dispatcher_minthreads: integer: Minimum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ;dispatcher_minthreads=1&lt;br /&gt;
&lt;br /&gt;
 ;dispatcher_priority: string: Default priority of message dispatch threads&lt;br /&gt;
 ;dispatcher_priority=normal&lt;br /&gt;
&lt;br /&gt;
 ; floodevents: integer: Threshold for signaling congestion when the number of messages waiting to be dispatched exceeds it.&lt;br /&gt;
 ; When entering congestion, all new MAP dialogs and USSD sessions will be refused.&lt;br /&gt;
 ; 0 disables the mechanism&lt;br /&gt;
 ;floodevents=0&lt;br /&gt;
&lt;br /&gt;
 ; congestion_exit_factor: double: Factor used to calculate the exit congestion threshold&lt;br /&gt;
 ; NOTE: if the factor results in a exit congestion threshold of 0 or greater than floodevents, &lt;br /&gt;
 ; the setting will be overriden and the exit congestion threshold will be set to 1.&lt;br /&gt;
 ;congestion_exit_factor=0.5&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Timeout settings should be correlated with timeout settings in TCAP and SMPP, each having its own timeout mechanism.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gateway applications which do the MAP &amp;lt;-&amp;gt; USSD translation are configured through section like the one below:&lt;br /&gt;
&lt;br /&gt;
 [appName]&lt;br /&gt;
 ; section name is the name of the camel_map application, it must correspond to a [local appName] section in camel_map &lt;br /&gt;
&lt;br /&gt;
 ; enable: boolean: Enable this application&lt;br /&gt;
 ; Defaults to yes&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of MAP &amp;lt;-&amp;gt; USSD translator: &lt;br /&gt;
 ;  - SCF means that is the part that receives new dialogs from the HLR (user initiated USSD)&lt;br /&gt;
 ;  - HLR is the part that receives new dialogs from gsmSCF (network initiated USSD)&lt;br /&gt;
 ; This setting cannot be changed on reload.&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into &lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; print_msg: boolean: Print sent/received messages to output&lt;br /&gt;
 ;print_msg=no&lt;br /&gt;
  &lt;br /&gt;
 ; print_xml: boolean: Print sent/received XML data to output&lt;br /&gt;
 ;print_xml=no&lt;br /&gt;
 &lt;br /&gt;
 ; local_addr. : prefix: Parameters prefixed with this set the local SCCP address of this application &lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; local_addr.CallingPartyAddress.route=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.ssn=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.pointcode=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.nature=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.plan=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.translation=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.encoding= &lt;br /&gt;
 &lt;br /&gt;
 ; default_routing: bool : Do routing to default address for all messages&lt;br /&gt;
 ; default_routing=no&lt;br /&gt;
 &lt;br /&gt;
 ; default_addr. : prefix: parameters prefixed with this will be used as the default SCCP called address&lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; default_addr.application=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.route=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.ssn=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.pointcode=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.nature=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.translation=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.encoding=&lt;br /&gt;
 &lt;br /&gt;
 ; hlr_ssn: integer: The SSN expected in the calling address from a HLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;hlr_ssn=6&lt;br /&gt;
 &lt;br /&gt;
 ; vlr_ssn: integer: The SSN expected in the calling address from a VLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;vlr_ssn=7&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each section should have its own equivalent in ''camel_map.conf''.&lt;br /&gt;
In the USSD GW scenario, at least tho applications are needed, one acting as SCF, one as HLR. For load sharing multiple gsmSCF and HLR applications can be configured (see the configuration example below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 gsmSCF applications and 2 HLR applications, each one corresponding with a application section in the ''camel_map.conf'' example:&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 component_ttl=600000                                                                                                                         &lt;br /&gt;
 dialog_ended_ttl=0                                                                                                                           &lt;br /&gt;
 dispatcher_maxthreads=10                                                                                                                     &lt;br /&gt;
 dispatcher_minthreads=5                                                                                                                      &lt;br /&gt;
 ;dispatcher_priority=normal                                                                                                                  &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [ussdSCF1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
&lt;br /&gt;
 [ussdSCF2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
 &lt;br /&gt;
 [ussdHLR1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                         &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd                                                                                              &lt;br /&gt;
                                                   &lt;br /&gt;
 [ussdHLR2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
TODO - configuration explanations&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example''''&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
 server=smpp-server                                                                                                                           &lt;br /&gt;
 track_id=ussdgw                                                                                                                              &lt;br /&gt;
 track_id_base=ussdgw/                                                                                                                        &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [smpp-server]                                                                                                                                &lt;br /&gt;
 enable=true                                                                                                                                  &lt;br /&gt;
 session_responseinterval=600000                                                                                                              &lt;br /&gt;
 sessionset_process_max=1                                                                                                                     &lt;br /&gt;
 codec_warndefaults=false                                                                                                                     &lt;br /&gt;
 print-messages=no                                                                                                                            &lt;br /&gt;
                                                                                                                                            &lt;br /&gt;
 [listenerserver server]                                                                                                                      &lt;br /&gt;
 ;enable=yes                                                                                                                                  &lt;br /&gt;
 addr=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=12345    &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Monitoring ===&lt;br /&gt;
&lt;br /&gt;
This section details comands through which the state of the USSD GW can be monitored.&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
* '''Congestion state monitoring'''&lt;br /&gt;
&lt;br /&gt;
The ''ussd_map'' module will generate an alarm when entering/exiting a congestion state. If SNMP support is enabled, this will generate a trap on SNMP.&lt;br /&gt;
The congestion status is also reported in the ''state'' entry in the result of the module status command.&lt;br /&gt;
&lt;br /&gt;
* '''Module status'''&lt;br /&gt;
&lt;br /&gt;
The module reports its status through the following command in the YATE telnet console:&lt;br /&gt;
&lt;br /&gt;
 status ussd_map&lt;br /&gt;
&lt;br /&gt;
The command will print the following information:&lt;br /&gt;
&lt;br /&gt;
 workers=count_of_dispatching_threads,messages=count_msg,dialogs=count_of_dialogs,state=normal,count=count_of_applications;format=Type | CurrentDlgs| MAPCreated | UssdCreated |DefaultRouted | MAPSent | MapRecv | USSDSent | USSDRecv | MAPAbort | USSDAbort | BuiltAbort | MAPTimeouts | USSDTimeouts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
* workers: current number of used dispatching threads from the maximum configured pool (e.g., 3/10 means 3 threads are used of a pool of 10)&lt;br /&gt;
* messages: count of messages waiting on the dispatching queue of the engine&lt;br /&gt;
* dialogs: total number of USSD sessions currently handled by all applications&lt;br /&gt;
* state of the engine: normal/congestion&lt;br /&gt;
* count: number of applications acting either as gsmSCF, either as HLR&lt;br /&gt;
* format: name of the application for which the following data is reported:&lt;br /&gt;
** Type: role of the application: SCF (communicates with real HLR), HLR (communicates with real gsmSCF)&lt;br /&gt;
** CurrentDlgs: number of current MAP dialogs handled by this application&lt;br /&gt;
** MAPCreated: number of sessions (dialogs) started by the MAP side&lt;br /&gt;
** UssdCreated: number of sessions (dialogs) started by the SMPP side&lt;br /&gt;
** DefaultRouted: number of dialogs for which failover took place&lt;br /&gt;
** MAPSent: number of MAP messages sent to gsmSCF/HLR. It doesn't count the ones sent via failover routing.&lt;br /&gt;
** MAPRecv: number of MAP messages received from gsmSCF/HLR&lt;br /&gt;
** USSDSent: number of sent ussd.execute/ussd.update/ussd.finalize messages towards the SMPP side.&lt;br /&gt;
** USSDRecv: number of received ussd.execute/ussd.update/usdd.notify messages from SMPP side.&lt;br /&gt;
** MAPAbort: number of dialog aborts generated by MAP side&lt;br /&gt;
** USSDAbort: number of dialog aborts generated by USSD side&lt;br /&gt;
** BuiltAbort: number of dialog aborts generated by the ussd_map module (e.g., not having a ussd.update message processed by anyone will cause ussd_map to generate session abort)&lt;br /&gt;
** MAPTimeouts: number of dialog timeouts generated by MAP side&lt;br /&gt;
** USSDTimeouts: number of timeouts reported by USSD side&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Module control commands'''&lt;br /&gt;
&lt;br /&gt;
The module offers the following control commands through the telnet console:&lt;br /&gt;
* ''control ussd_map appName print-msg [yes|no|verbose]'' : enable printing of received/sent map./ussd./messages.&lt;br /&gt;
* ''control ussd_map appName print-xml [yes|no|verbose]'' : enable printing of received/sent XMLs.&lt;br /&gt;
* ''control ussd_map appName export-xml-as [string|object|both]'' : change the way XML is set in the internal messages&lt;br /&gt;
* ''control ussd_map start_stats'' : begin gathering data for statistics&lt;br /&gt;
* ''control ussd_map stop_stats'' : stop gathering data for statistics&lt;br /&gt;
* ''control usdd_map stats'' : print statistic data per engine and each application in part. Data contains number of MAP messages handled per second, number of USSD messages handled per second, maximum number of current dialogs, number of timeouts and number of aborts.&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
The ysmpp module provides the following options for status command:&lt;br /&gt;
&lt;br /&gt;
'NOTE' the module_name can take the following values: smppserver or smppclient.&lt;br /&gt;
&lt;br /&gt;
* status module_name listeners&lt;br /&gt;
Prints the module listeners status in format: Address|Status|Reason.&lt;br /&gt;
&lt;br /&gt;
* status module_name sessions&lt;br /&gt;
Prints the status of the sessions in format: Id|State|BindMode|SystemId|IpAddress:Port|Congested|Incoming Queue|Outgoing Queue;&lt;br /&gt;
&lt;br /&gt;
** Id: The ID of the SMPP session. Can be used for routing.&lt;br /&gt;
** State: The state of the SMPP session.&lt;br /&gt;
** BindMode: The mode in which the session was bound. (Send/Recv/SendRecv)&lt;br /&gt;
** SystemId: The id with which the session has been authenticated. Can be used in routing.&lt;br /&gt;
** IpAddress:Port: The Ip Address and port of the remote end of the session.&lt;br /&gt;
** Congested: True if this session is in congestion state.&lt;br /&gt;
** Incoming Queue: The number of messages not processed in the incoming queue.&lt;br /&gt;
** Outgoing Queue: The number of messages not processed in the outgoing queue.&lt;br /&gt;
&lt;br /&gt;
*status module_name ussd overview&lt;br /&gt;
Prints the stats of the USSD sessions in format: Total|Active|Average Duration|Total Sent|Total Received|AverageTrafficPerSecond|EndedWithErrors|CongestionRefused&lt;br /&gt;
&lt;br /&gt;
** Total: the number of USSD sessions created since the starting of the program.&lt;br /&gt;
** Active: the number of USSD sessions currently active.&lt;br /&gt;
** Average Duration: average duration of a ussd session.&lt;br /&gt;
** Total Sent: total number of SMPP messages sent for USSD sessions.&lt;br /&gt;
** Total Received: total number of SMPP messages received for USSD sessions.&lt;br /&gt;
** AverageTrafficPerSecond: average traffic per second for USSD sessions.&lt;br /&gt;
** EndedWithErrors: the number of USSD sessions that ended with error.&lt;br /&gt;
** CongestionRefused: the number of USSD sessions refused because the server was overloaded.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* Mobile Application Part (MAP) specification: ETSI TE 129 002&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/USSD_GW</id>
		<title>USSD GW</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/USSD_GW"/>
				<updated>2014-02-06T15:50:44Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: /* ussd.update */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an implementation an USSD gateway acting as a MAP Service Control Function (gsmSCF) and as a HLR at the same time. When communicating with a HLR or VLR, the YATE USSD GW acts as a gsmSCF. When communicating with a gsmSCF, the YATE USSDGW acts as a HLR.&lt;br /&gt;
The functionality of the USSD GW allows:&lt;br /&gt;
* redirecting of USSD requests arriving either from user side or gsmSCF side to a SMPP client where they can be altered.&lt;br /&gt;
* acting as a proxy for requests that need not be handled by SMPP clients or when the SMPP handling fails&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MAP USSD description ==&lt;br /&gt;
&lt;br /&gt;
In versions 2 and 3 of the GSM MAP protocol there are 3 operations used for USSD operations:&lt;br /&gt;
* processUnstructedSS-Request&lt;br /&gt;
* unstructuredSS-Request&lt;br /&gt;
* unstrusturedSS-Notify&lt;br /&gt;
&lt;br /&gt;
The are 2 scenarios for USSD operations:&lt;br /&gt;
* mobile initiated USSD requests&lt;br /&gt;
* network initiated USSD requests&lt;br /&gt;
&lt;br /&gt;
A TCAP dialog used by USSD is always terminated by the network side.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mobile initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobile initiated USSD requests are USSD requests started by the mobile subscriber.  &lt;br /&gt;
&lt;br /&gt;
A USSD request is started when receiving a TCAP BEGIN message containing the ''processUnstructedSS-Request'' Invoke operation. The request can be handled by the VLR, HLR or a gsmSCF. If the VLR does not handle the request, it will transmit it to the HLR. The HLR can either handle it itself or it can transmit it to a gsmSCF for handling.&lt;br /&gt;
&lt;br /&gt;
At this point, the network can either send a response to the request immediately or request additional information. In the first case, the handler of the request will send a TCAP End with ''processUnstructuredSS-Request'' ResultLast containing the result for the request. &lt;br /&gt;
In the latter case, the network will send a TCAP CONTINUE with ''unstructuredSS-Request'' Invoke operation. The response of the mobile subscriber to this request will be passed to the network in a TCAP CONTINUE with ''unstructuredSS-Request'' ResultLast component. At this point, if the network decides that it has enough information for providing the response to the user, it will send a TCAP END with ''processUnstructuredSS-Request'' ResultLast. Otherwise, it can request further information through another ''unstructuredSS-Request'' Invoke operation.&lt;br /&gt;
&lt;br /&gt;
=== Network initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD requests are USSD requests started by the network towards a certain subscriber.&lt;br /&gt;
&lt;br /&gt;
Requests made by the network can be of one of two types:&lt;br /&gt;
* user interaction requests&lt;br /&gt;
* network notification requests.&lt;br /&gt;
&lt;br /&gt;
User interaction requests are USSD requests that the network makes in which it requires some type of information back from the mobile subscriber. These are started by the network through a TCAP BEGIN containing an ''unstructuredSS-Request'' Invoke. The answer from the mobile subscriber will be received in a TCAP CONTINUE containing an ''unstructuredSS-Request'' ResultLast. If the network still wants to request further information, it will repeat the process. Otherwise, it will send a TCAP END to close the TCAP dialog.&lt;br /&gt;
&lt;br /&gt;
Network notification requests are USSD requests in which the network only sends a notification to the user. This is achieved by sending a TCAP BEGIN message containing a ''unstructuredSS-Notify'' Invoke. The mobile subscriber side will only respond with a TCAP CONTINUE containing an empty ''unstructuredSS-Notify'' in order to signal that the notification was received. The network will close the TCAP dialog through TCAP END.&lt;br /&gt;
&lt;br /&gt;
=== MAP USSD parameters ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following list describe common parameters used across all MAP USSD operations:&lt;br /&gt;
* ''destinationReference'': this parameter will contain either an MSISDN or an IMSI. In the case of mobile originated USSD request, this will identify the user which made the request. In the case of network initiated requests, it will identify the mobile user to be contacted for this request.&lt;br /&gt;
* ''ussd-String'': for ''processUnstructuredSS-Request'' Invoke it contains the dialed USSD code, for the result it would probably contain a message from the network detailing the result of the request. For ''unstructuredSS-Request'' Invoke it will contain a message asking for the user to choose some option and for the result it will contain the option chosen by the user. In the case of ''unstructuredSS-Notify'', this parameter will only be present in the Invoke.&lt;br /&gt;
* ''ussd-DataCodingScheme'': this is a parameter which specifies in which way the ''ussd-String'' parameter is encoded and it is present whenever ''ussd-String'' is present. E.g., this parameter would indicate if the ''ussd-String'' is encoded using GSM7bit encoding or UCS2.&lt;br /&gt;
&lt;br /&gt;
== SMPP USSD description ==&lt;br /&gt;
&lt;br /&gt;
'''TO DO'''&lt;br /&gt;
&lt;br /&gt;
== System description ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== System design ===&lt;br /&gt;
&lt;br /&gt;
In order to provide the specified functionality, the system makes use of the following YATE components:&lt;br /&gt;
* the SS7 stack  present in YATE &lt;br /&gt;
* the camel_map module which decodes/encodes MAP messages coming from the SS7 network to/from internal YATE messages containing MAP operations in XML form. Together with the SS7 layer this provides MAP connectivity with HLR/gsmSCF.&lt;br /&gt;
* the ussd_map module which takes internal MAP messsages decoded by the camel_map moduled and translates them to internal USSD messages. This module acts as gsmSCF towards a HLR and as a HLR towards a gsmSCF.&lt;br /&gt;
* the SMPP stack present in YATE (ysmpp module) which is able to catch internal USSD messages and transmit them over SMPP. It also translates SMPP messages into internal USSD messages.&lt;br /&gt;
* requests for new USSD sessions will go through routing to decide who should handle the request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following sections detail the behaviour of the system in the different USSD scenarios.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mobile originated USSD handling ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A user initiated USSD session is handled according to the following schema:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# HLR sends a ''processUnstructuredSS-Request (Invoke)'' for code *100#. camel_map decodes the ''ussd-String'' into ''ussd-Text=*100#''.&lt;br /&gt;
# the ussd_map module (gsmSCF side) processes the request received from the HLR and emits a ''call.route'' message with ''called=*100#''.&lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with the ''callto'' parameter set to the value returned from routing. ussd_map dispatches the ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will send  it to the target specified in ''callto'' parameter after the module prefix ''ysmppserver/''.&lt;br /&gt;
# The ysmpp module receives and process the received ''submit_sm'' message.&lt;br /&gt;
# The ysmpp module will send a ''call.route'' message with the ''called=*100#''.&lt;br /&gt;
# The ysmpp module emits a ''ussd.execute'' message with ''callto=retvalue from call.route'' message.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ussd.execute message and if it is the target of the message, meaning that ''callto'' starts with ''ussd_map/''. From that message it will build a map.message that it will send to the gsmSCF as a ''processUnstructuresSS-Request (Invoke)'' MAP message.&amp;lt;br&amp;gt;'''NOTE:''' From here on, the gsmSCF could handle the request in one of  two distinguished cases: one where the gsmSCF requires interaction with the mobile subscriber and one where the gsmSCF just needs to respond to the user request. The following steps detail the former case.&amp;lt;br&amp;gt;&lt;br /&gt;
# gsmSCF sends an ''unstructuredSS-Request (Invoke)'' to  request further information.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits an ''ussd.update'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.update'' message and confirms to the SMPP client that the message sent in step 5 was processed.&lt;br /&gt;
# The SMPP client should confirm the processing of the SMPP message sent in step 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver_sm'' message to the SMPP client with the menu received in ''ussd.update'' message.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message with the received menu.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message from SMPP client and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.update'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time in which the mobile subscribers responds can be quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway when receiving the response from the mobile subscriber.&lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 13.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 21.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 9 and 24 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''processUnstructuredSS-Request (ResultLast)''  for the initial user request.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''processUnstructuredSS-Request (ResultLast)'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 22 or 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 21 or 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 31.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 29.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''processUnstructuredSS-Request (ResultLast)''.&lt;br /&gt;
&lt;br /&gt;
==== Network initiated USSD Request ====&lt;br /&gt;
&lt;br /&gt;
A network initiated USSD session is handled as described in the following figure:&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
# gsmSCF sends''unstructuredSS-Request (Invoke)'' to USSD Gateway (HLR part) to present a menu for MSISDN 0015559191.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits a ''call.route'' message with called=0015559191. &lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with ''callto'' set to the route returned in the return value of the ''call.route'' message and dispatches an ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will then send to the target specified in the ''callto'&amp;quot; parameter after the ''ysmppserver'' module prefix.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message towards SMPP server.&lt;br /&gt;
# The SMPP server processes the received ''submit_sm'' message and dispatches a ''call.route'' message.&lt;br /&gt;
# After successfully dispatching of ''call.route'' message the SMPP server will dispatch a ''call.execute'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.execute'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time to receiving a response from the user after gsmSCF has requested user interaction could be possibly quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway &lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 4.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 13.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 1 and 16 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''TCAP END'' in order to finish the USSD session.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''TCAP END'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 13.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 22.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 21.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''END''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fallback/Proxy mode ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following images detail scenarios where the USSD GW is instructed to do failover.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when an HLR sends ''processUnstructuredSS-Request (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:''' &lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message. &lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD session fallback.&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when a gsmSCF sends a &amp;quot;unstructuredSS-Request/unstructuredSS-Notify (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:'''&lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message.&lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The SMPP USSD gateway will also be bypassed when the ''ussd_map'' module is configured to do failover for all requests.&lt;br /&gt;
&lt;br /&gt;
Any type of SMPP error received either in the result for the ''ussd.execute'' or in the first message back from SMPP that does not have a mapping on MAP will lead to the ''ussd_map'' module doing failover. Errors that would generate a failover are errors like timeout, session ended abnormally, unknown errors, congestion errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once ''ussd_map'' decides that failover should be done, it will use the original received message  from the HLR (MO case)/gsmSCF (MT case) and it will only alter the called address to be the one of the gsmSCF/HLR set for the failover.. The calling address will remain the one received from HLR/gsmSCF, the idea being that for the first message we want to pretend that we are the original gsmSCF/HLR. When the receiving end of this message will want to respond, it will use the calling address from the message. Seeing that the ''ussd_map'' module set it to the original calller's address, further messages exchanged in that dialog between HLR and gsmSCF will not pass through USSD GW again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Internal message API ====&lt;br /&gt;
&lt;br /&gt;
This section documents the YATE messages used internally by the USSD GW.&lt;br /&gt;
&lt;br /&gt;
===== call.route =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used by ussd_map and ysmpp module to determine a destination where a new USSD session should be sent for further processing.&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module when receiving a request for a new USSD session on MAP for ''ussd_map'' or on SMPP for ''ysmpp''.&lt;br /&gt;
''ussd_map'' will only send this message if default routing is not enabled from configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
* module&lt;br /&gt;
** type: string &lt;br /&gt;
** Name of the module which requested routing&lt;br /&gt;
* application&lt;br /&gt;
** type: string&lt;br /&gt;
** Name of the ussd_map application which sent this routing request&lt;br /&gt;
* route_type&lt;br /&gt;
** type: keyword, value: ussd &lt;br /&gt;
** Specifies routing type, in this case it'll be USSD routing&lt;br /&gt;
* smpp_session_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
* smpp_system_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* if the message was processed, the return value of the message indicates the destination of the subsequent ''ussd.execute'' message.&lt;br /&gt;
* if the message was not processed or it returned with error (signaled by the return value being either &amp;quot;-&amp;quot; or &amp;quot;error&amp;quot;)&lt;br /&gt;
** ''ussd_map'' will do failover&lt;br /&gt;
** ysmpp will close the SMPP session, indicating an error either set by the call.route or either set to the default unknown error indication.&lt;br /&gt;
&lt;br /&gt;
===== ussd.execute =====&lt;br /&gt;
&lt;br /&gt;
This message is used to begin a new USSD session:&lt;br /&gt;
* on SMPP, if the message is directed to the ''ysmpp'' module&lt;br /&gt;
* on MAP if the message is directed to the ''ussd_map'' module&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module after successful routing stage. In case of the ''ussd_map'' module, this is message is sent if the routing stage did not indicate failover necessity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* callto:  &lt;br /&gt;
** type : string&lt;br /&gt;
** It specifies the target module to process the message. The string should start with  'ysmppserver/' for the  ''ysmpp&amp;quot; module and with ''ussd_map/'' for the ''ussd_map'' module.&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier assigned for this USSD session by the entity that processed this message.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error returned if the message was not processed.&lt;br /&gt;
&lt;br /&gt;
Processing of this message will return failure:&lt;br /&gt;
* if the message will not be processed&lt;br /&gt;
* if the 'id' parameter is missing.&lt;br /&gt;
* in case of processing error &lt;br /&gt;
* in case of congestion&lt;br /&gt;
&lt;br /&gt;
===== ussd.update =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used for transmitting USSD messages during a USSD session. This type of message will be used after the initial stage of creating the session through ''ussd.execute'' has succeeded.&lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP CONTINUE message &lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will be refused if it is received after a ''ussd.finalize'' message.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a values not allowed in the context of the USSD session (e.g., sending a ''processUnstructuredSS-Request inside a ''ussd.update'' message)&lt;br /&gt;
&lt;br /&gt;
===== ussd.finalize =====&lt;br /&gt;
&lt;br /&gt;
This message is used to signal the termination of the USSD session. Successful processing of this message means that the USSD session was terminated and is no longer available. &lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP END/ABORT message depending upon the parameters received. A message containing an error that does not map to a MAP error will generate a TCAP ABORT.&lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client, a message that will usually contain a last message indication.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by 'peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a value not allowed in the context of the USSD session&lt;br /&gt;
&lt;br /&gt;
===== Keyword values =====&lt;br /&gt;
&lt;br /&gt;
This section details acceptable values for parameters listed as having type ''keyword''.&lt;br /&gt;
&lt;br /&gt;
* '''hlr.nature/vlr.nature/gsmscf.nature/destination_reference.nature'''&lt;br /&gt;
** unknown&lt;br /&gt;
** international&lt;br /&gt;
** national&lt;br /&gt;
** network-specific&lt;br /&gt;
** subscriber&lt;br /&gt;
** abbreviated&lt;br /&gt;
&lt;br /&gt;
* '''hlr.plan/vlr.plan/gsmscf.plan/destination_reference.plan'''&lt;br /&gt;
** unknown&lt;br /&gt;
** isdn&lt;br /&gt;
** data&lt;br /&gt;
** telex&lt;br /&gt;
** land-mobile&lt;br /&gt;
** national&lt;br /&gt;
** private&lt;br /&gt;
&lt;br /&gt;
* '''operation_type'''&lt;br /&gt;
** pssd: mapping of MAP v1 USSD operation ''processUnstructuredSS-Data'' and of SMPP operation ''PSSD''. &lt;br /&gt;
** pssr: mapping of MAP v2 USSD operation ''processUnstructuredSS-Request'' and of SMPP operation ''PSSR''.&lt;br /&gt;
** ussr: mapping of MAP v2 USSD operation ''unstructuredSS-Request'' and of SMPP operation ''USSR&amp;quot;.&lt;br /&gt;
** ussn: mapping of MAP v2 USSD operation ''unstructuredSS-Notify'' and of SMPP operation ''USSN''.&lt;br /&gt;
&lt;br /&gt;
* '''error'''&lt;br /&gt;
** invalid_logic:  error reported when required processing does not follow USSD rules (e.g., MT request starting with ''processUnstructuredSS-Requests'')&lt;br /&gt;
** system_failure: error mapping for MAP error ''systemFailure''.&lt;br /&gt;
** data_missing: error mapping for  MAP error ''dataMissing''.&lt;br /&gt;
** unexpected_data: error mapping for MAP error ''unexpectedDataValue''.&lt;br /&gt;
** unknown_alphabet: error mapping for MAP error ''unknownAlphabet''.&lt;br /&gt;
** absent_subscriber: error mapping for MAP error ''absentSubscriber''.&lt;br /&gt;
** illegal_subscriber: error mapping for MAP error ''illegalSubscriber''.&lt;br /&gt;
** illegal_equipment: error mapping for MAP error ''illegalEquipment''.&lt;br /&gt;
** ussd_busy: error mapping for MAP error ''ussd-Busy''.&lt;br /&gt;
** call_barred: error mapping for MAP error ''callBarred''.&lt;br /&gt;
** network_failure: error signaling message transmission failure due to  connectivity issues either on the SS7 side or SMPP side.&lt;br /&gt;
** timeout_expired: error signaling a  request timeout occurrence.&lt;br /&gt;
** ussd_sess_end_abnormally: error signaling USSD session termination due to an unknown cause. Mapping for this error implies a TCAP Abort either being generated of received. &lt;br /&gt;
** unknown_error: error specified when there is no available mapping for an errror from SMPP to MAP or vice versa.&lt;br /&gt;
** throttling_error: error signaling that a message failed to be processed due to processing side being in congestion state.&lt;br /&gt;
** protocol_error: SMPP generic error. This error is put whenever there is a SMPP specific error that cannot be mapped into one of the other errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== SMPP custom parameters ====&lt;br /&gt;
&lt;br /&gt;
* 0x1502 =&amp;gt; IMSI;&lt;br /&gt;
* 0x1503 =&amp;gt; VLR Type of Number;&lt;br /&gt;
* 0x1504 =&amp;gt; VLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1505 =&amp;gt; VLR address;&lt;br /&gt;
* 0x1506 =&amp;gt; GSM SCF Type of Number;&lt;br /&gt;
* 0x1507 =&amp;gt; GSM SCF Numbering Plan Indicator;&lt;br /&gt;
* 0x1508 =&amp;gt; GSM_SCF address;&lt;br /&gt;
* 0x1509 =&amp;gt; Destination Reference Type of Number;&lt;br /&gt;
* 0x150a =&amp;gt; Destination Reference Numbering Plan Indicator;&lt;br /&gt;
* 0x150b =&amp;gt; Destination Reference;&lt;br /&gt;
* 0x150c =&amp;gt; MSISDN&lt;br /&gt;
* 0x150d =&amp;gt; Alerting Pattern&lt;br /&gt;
* 0x1800 =&amp;gt; HLR Type of Number;&lt;br /&gt;
* 0x1801 =&amp;gt; HLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1802 =&amp;gt; HLR address.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
==== ysigchan module ====&lt;br /&gt;
&lt;br /&gt;
In order to have MAP connectivity, TCAP instances must be configured in ''ysigchan.conf'': &lt;br /&gt;
&lt;br /&gt;
 ; Example of a SS7 Transaction Capabilities Application Part&lt;br /&gt;
 ; This component is created when encountering a section of this kind&lt;br /&gt;
 ;[ss7tcap]&lt;br /&gt;
 ; type: keyword: identifies the component as a SS7 Transfer Capabilities Application Part&lt;br /&gt;
 ; type = ss7-tcap-ansi for ANSI TCAP&lt;br /&gt;
 ; type = ss7-tcap-itu for ITU TCAP&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; local_SSN: local SubSystem Number. Mandatory&lt;br /&gt;
 ;local_SSN=&lt;br /&gt;
 &lt;br /&gt;
 ; default_remote_SSN: remote SubSystem Number to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_SSN=&lt;br /&gt;
  &lt;br /&gt;
 ; default_remote_pointcode: remote Point Code to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_pointcode=&lt;br /&gt;
 &lt;br /&gt;
 ; pointcodetype: remote Point Code type. See above documentation for available types&lt;br /&gt;
 ;pointcodetype=&lt;br /&gt;
 &lt;br /&gt;
 ; sccp: Name of the SCCP component to create and be used by this TCAP&lt;br /&gt;
 ; A section with the name given here must exist in order to configure the SCCP level&lt;br /&gt;
 ;sccp=&lt;br /&gt;
 &lt;br /&gt;
 ; default_hopcounter: HopCounter provided to SCCP if the application does not provide one&lt;br /&gt;
 ; Values range 1-15, 0 or boolean false disables, boolean true sets to 15&lt;br /&gt;
 ; A non-zero value will force using XUDT or LUDT instead of UDT messages&lt;br /&gt;
 ;default_hopcounter=false&lt;br /&gt;
 &lt;br /&gt;
 ; transact_timeout: Time in seconds to timeout a TCAP transaction after no more activity was registered on it&lt;br /&gt;
 ; NOTE: Values below 15 seconds will be ignored and the timer will assume the default value.&lt;br /&gt;
 ; Defaults to 300 seconds&lt;br /&gt;
 ;transact_timeout=300&lt;br /&gt;
 &lt;br /&gt;
 ; max_timeout_checks: integer: Maximum number of timeout checks done on a transaction without starting the transaction&lt;br /&gt;
 ;  timer before forcefully starting the transaction timer&lt;br /&gt;
 ; Defaults to 10&lt;br /&gt;
 ;max_timeout_checks=10 &lt;br /&gt;
 &lt;br /&gt;
 ; timeout_check: Time interval in milliseconds to check for timeouts.&lt;br /&gt;
 ; Default to 100 ms&lt;br /&gt;
 ;timeout_check=100 &lt;br /&gt;
 &lt;br /&gt;
 ; floodevents: int: How many queued incoming TCAP messages trigger a congestion warning and the drop mechanism&lt;br /&gt;
 ;  for Unidirectional/Begin/QueryWithPermission/QueryWithoutPermission messages.&lt;br /&gt;
 ;  Exit from congestion will take place when there are less the floodevents/4 messages in the queue&lt;br /&gt;
 ; NOTE! Setting this parameter to 0 will disable the congestion warning and protection. Setting it to one will &lt;br /&gt;
 ;  be overriden and floodevents will be set to 2.&lt;br /&gt;
 ;floodevents=1000&lt;br /&gt;
 &lt;br /&gt;
 ;print-messages: Boolean to enable/disable printing of decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ;extended-debug: Boolean to enable/disable printing of the step-by-step decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload. print-messages must be true.&lt;br /&gt;
 ;extended-debug=false&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for keeping the list of current transactions&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
 [tcap-scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=147                                                                                                                                &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                     &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap-hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=7                                                                                                                                  &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Further configuration for SS7 connectivity is required (SCCP, MTP3, etc.).&lt;br /&gt;
&lt;br /&gt;
==== camel_map module ====&lt;br /&gt;
&lt;br /&gt;
Configuring of tracking IDs is done in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ;track_id: string: Shared engine variable name used to obtain a unique tracking ID for TCAP transactions&lt;br /&gt;
 ; If not set, the module will not set a tracking ID for the TCAP transaction&lt;br /&gt;
 ;track_id=&lt;br /&gt;
 &lt;br /&gt;
 ;track_id_base: string: Optional string with which to prefix the tracking ID&lt;br /&gt;
 ; This setting has no effect if track_id is not set&lt;br /&gt;
 ;track_id_base=&lt;br /&gt;
&lt;br /&gt;
In order to allow communication over MAP through SS7, sections configurating application should exist for each role of the ussd_map module (gsmSCF/HLR). A ''camel_map.conf'' section configuring an application looks like this:&lt;br /&gt;
 &lt;br /&gt;
 ;[local appName]&lt;br /&gt;
 ; This section configures a local application which transmits the XML messages as internal Yate messages&lt;br /&gt;
 &lt;br /&gt;
 ; translator: string: name of translator to be used by this application.&lt;br /&gt;
 ; Must be one one the [tcap ...] sections configured in the camel_map.conf file.&lt;br /&gt;
 ;translator=&lt;br /&gt;
  &lt;br /&gt;
 ; capabilities: string: List of capabilities separated by commas which this application supports&lt;br /&gt;
 ;capabilities=&lt;br /&gt;
  &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into a Yate message&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - string: pass the XML as a string&lt;br /&gt;
 ;  - object: pass the XML as an object&lt;br /&gt;
 ;  - both: pass the XML as a string and object&lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; enable: bool: Enable this application&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
&lt;br /&gt;
The translator setting refers to a section of the type defined below which configures atachement to a TCAP instance&lt;br /&gt;
&lt;br /&gt;
 ;[tcap map]&lt;br /&gt;
 ; This section configures a TCAP User MAP/CAMEL protocol translator&lt;br /&gt;
 &lt;br /&gt;
 ; enable: bool: Enable this translator&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of TCAP User &lt;br /&gt;
 ; Allowed values are MAP or CAMEL&lt;br /&gt;
 ;type=MAP&lt;br /&gt;
 &lt;br /&gt;
 ; host: IP address: Address on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ;host=127.0.0.1 &lt;br /&gt;
 &lt;br /&gt;
 ; port: integer: Port on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ; Note: setting port to 0 will disable the listener, so it will not accept TCP applications&lt;br /&gt;
 ;port=5555&lt;br /&gt;
 &lt;br /&gt;
 ; tcap: string: Name of TCAP to which this TCAP user should attach itself to for the SS7 communication&lt;br /&gt;
 ;tcap=&lt;br /&gt;
 &lt;br /&gt;
 ; add-encoding: bool: Always add encoding attribute to XML elements for decoded parameters&lt;br /&gt;
 ;add-encoding=default from [general]&lt;br /&gt;
 &lt;br /&gt;
 ; add-timestamp: bool: Add to XML timestamps used for estimating application latency&lt;br /&gt;
 ;add-timestamp=default from [general] &lt;br /&gt;
 &lt;br /&gt;
 ; print-messages: bool: Debug option to print TCAP and XML messages. This option is applicable on reload.&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-string: string: Specifies what the ussd-String parameter will contain as data&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - octets: ussd-String will contain the octets as they were received&lt;br /&gt;
 ;  - text: ussd-String will contain the GSM7Bit decoded text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-string=text&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-decode: string: Specifies what ussd-String parameters should be decoded into text&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - none: ussd-String parameters will never be decoded into text&lt;br /&gt;
 ;  - first: ussd-String in a TCAP Begin message will be decoded into text&lt;br /&gt;
 ;  - all: all ussd-String parameters will be decoded into text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-decode=all&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for mapping of TCAP transactions to applications&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For load sharing (especially in cases of high loads), you can configure multiple applications using the same translator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 applications acting as a gsmSCF, each one attached to the TCAP instance with gsmSCF SSN, and 2 applications as HLR, each one attached to the TCAP instance with HLR SSN 6:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 track_id=ussdgw&lt;br /&gt;
 track_id_base=ussdgw/&lt;br /&gt;
 &lt;br /&gt;
 [tcap scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-scf                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false                                                                                                                           &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-hlr                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false   &lt;br /&gt;
 &lt;br /&gt;
 [local ussdSCF1]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=first                                                                                                                            &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [local ussdSCF2]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=first               &lt;br /&gt;
 &lt;br /&gt;
 [local ussdHLR1]&lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=first                                                                                                                            &lt;br /&gt;
 &lt;br /&gt;
 [local ussdHLR2]                                                                                                                             &lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=first&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
The module is configured through ''ussd_map.conf''. The configuration file sets timeout parameters and processing threads parameters in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList for keeping dialogs&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
 &lt;br /&gt;
 ; component_ttl: integer: Component time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; Defaults to 600000 (10 minutes)&lt;br /&gt;
 ;component_ttl=600000&lt;br /&gt;
 &lt;br /&gt;
 ; dialog_idle_ttl: integer: Dialog idle (nothing sent/received) time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; It can be set to 0 to keep it alive until the remote party terminates the dialog&lt;br /&gt;
 ; Defaults to 86400000 (1 day)&lt;br /&gt;
 ;dialog_idle_ttl=86400000&lt;br /&gt;
&lt;br /&gt;
 ; dialog_ended_ttl: integer: Ended dialog time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000.&lt;br /&gt;
 ; It can be set to 0 to remove the dialog after termination&lt;br /&gt;
 ; Defaults to 0&lt;br /&gt;
 ;dialog_ended_ttl=0&lt;br /&gt;
 &lt;br /&gt;
 ; dispatcher_maxthreads: integer: Maximum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ; NOTE: if the value is set to 0, the module will enqueue the messages into YATE's engine.&lt;br /&gt;
 ;dispatcher_maxthreads=0&lt;br /&gt;
&lt;br /&gt;
 ; dispatcher_minthreads: integer: Minimum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ;dispatcher_minthreads=1&lt;br /&gt;
&lt;br /&gt;
 ;dispatcher_priority: string: Default priority of message dispatch threads&lt;br /&gt;
 ;dispatcher_priority=normal&lt;br /&gt;
&lt;br /&gt;
 ; floodevents: integer: Threshold for signaling congestion when the number of messages waiting to be dispatched exceeds it.&lt;br /&gt;
 ; When entering congestion, all new MAP dialogs and USSD sessions will be refused.&lt;br /&gt;
 ; 0 disables the mechanism&lt;br /&gt;
 ;floodevents=0&lt;br /&gt;
&lt;br /&gt;
 ; congestion_exit_factor: double: Factor used to calculate the exit congestion threshold&lt;br /&gt;
 ; NOTE: if the factor results in a exit congestion threshold of 0 or greater than floodevents, &lt;br /&gt;
 ; the setting will be overriden and the exit congestion threshold will be set to 1.&lt;br /&gt;
 ;congestion_exit_factor=0.5&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Timeout settings should be correlated with timeout settings in TCAP and SMPP, each having its own timeout mechanism.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gateway applications which do the MAP &amp;lt;-&amp;gt; USSD translation are configured through section like the one below:&lt;br /&gt;
&lt;br /&gt;
 [appName]&lt;br /&gt;
 ; section name is the name of the camel_map application, it must correspond to a [local appName] section in camel_map &lt;br /&gt;
&lt;br /&gt;
 ; enable: boolean: Enable this application&lt;br /&gt;
 ; Defaults to yes&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of MAP &amp;lt;-&amp;gt; USSD translator: &lt;br /&gt;
 ;  - SCF means that is the part that receives new dialogs from the HLR (user initiated USSD)&lt;br /&gt;
 ;  - HLR is the part that receives new dialogs from gsmSCF (network initiated USSD)&lt;br /&gt;
 ; This setting cannot be changed on reload.&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into &lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; print_msg: boolean: Print sent/received messages to output&lt;br /&gt;
 ;print_msg=no&lt;br /&gt;
  &lt;br /&gt;
 ; print_xml: boolean: Print sent/received XML data to output&lt;br /&gt;
 ;print_xml=no&lt;br /&gt;
 &lt;br /&gt;
 ; local_addr. : prefix: Parameters prefixed with this set the local SCCP address of this application &lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; local_addr.CallingPartyAddress.route=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.ssn=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.pointcode=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.nature=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.plan=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.translation=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.encoding= &lt;br /&gt;
 &lt;br /&gt;
 ; default_routing: bool : Do routing to default address for all messages&lt;br /&gt;
 ; default_routing=no&lt;br /&gt;
 &lt;br /&gt;
 ; default_addr. : prefix: parameters prefixed with this will be used as the default SCCP called address&lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; default_addr.application=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.route=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.ssn=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.pointcode=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.nature=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.translation=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.encoding=&lt;br /&gt;
 &lt;br /&gt;
 ; hlr_ssn: integer: The SSN expected in the calling address from a HLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;hlr_ssn=6&lt;br /&gt;
 &lt;br /&gt;
 ; vlr_ssn: integer: The SSN expected in the calling address from a VLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;vlr_ssn=7&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each section should have its own equivalent in ''camel_map.conf''.&lt;br /&gt;
In the USSD GW scenario, at least tho applications are needed, one acting as SCF, one as HLR. For load sharing multiple gsmSCF and HLR applications can be configured (see the configuration example below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 gsmSCF applications and 2 HLR applications, each one corresponding with a application section in the ''camel_map.conf'' example:&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 component_ttl=600000                                                                                                                         &lt;br /&gt;
 dialog_ended_ttl=0                                                                                                                           &lt;br /&gt;
 dispatcher_maxthreads=10                                                                                                                     &lt;br /&gt;
 dispatcher_minthreads=5                                                                                                                      &lt;br /&gt;
 ;dispatcher_priority=normal                                                                                                                  &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [ussdSCF1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
&lt;br /&gt;
 [ussdSCF2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
 &lt;br /&gt;
 [ussdHLR1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                         &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd                                                                                              &lt;br /&gt;
                                                   &lt;br /&gt;
 [ussdHLR2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
TODO - configuration explanations&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example''''&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
 server=smpp-server                                                                                                                           &lt;br /&gt;
 track_id=ussdgw                                                                                                                              &lt;br /&gt;
 track_id_base=ussdgw/                                                                                                                        &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [smpp-server]                                                                                                                                &lt;br /&gt;
 enable=true                                                                                                                                  &lt;br /&gt;
 session_responseinterval=600000                                                                                                              &lt;br /&gt;
 sessionset_process_max=1                                                                                                                     &lt;br /&gt;
 codec_warndefaults=false                                                                                                                     &lt;br /&gt;
 print-messages=no                                                                                                                            &lt;br /&gt;
                                                                                                                                            &lt;br /&gt;
 [listenerserver server]                                                                                                                      &lt;br /&gt;
 ;enable=yes                                                                                                                                  &lt;br /&gt;
 addr=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=12345    &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Monitoring ===&lt;br /&gt;
&lt;br /&gt;
This section details comands through which the state of the USSD GW can be monitored.&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
* '''Congestion state monitoring'''&lt;br /&gt;
&lt;br /&gt;
The ''ussd_map'' module will generate an alarm when entering/exiting a congestion state. If SNMP support is enabled, this will generate a trap on SNMP.&lt;br /&gt;
The congestion status is also reported in the ''state'' entry in the result of the module status command.&lt;br /&gt;
&lt;br /&gt;
* '''Module status'''&lt;br /&gt;
&lt;br /&gt;
The module reports its status through the following command in the YATE telnet console:&lt;br /&gt;
&lt;br /&gt;
 status ussd_map&lt;br /&gt;
&lt;br /&gt;
The command will print the following information:&lt;br /&gt;
&lt;br /&gt;
 workers=count_of_dispatching_threads,messages=count_msg,dialogs=count_of_dialogs,state=normal,count=count_of_applications;format=Type | CurrentDlgs| MAPCreated | UssdCreated |DefaultRouted | MAPSent | MapRecv | USSDSent | USSDRecv | MAPAbort | USSDAbort | BuiltAbort | MAPTimeouts | USSDTimeouts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
* workers: current number of used dispatching threads from the maximum configured pool (e.g., 3/10 means 3 threads are used of a pool of 10)&lt;br /&gt;
* messages: count of messages waiting on the dispatching queue of the engine&lt;br /&gt;
* dialogs: total number of USSD sessions currently handled by all applications&lt;br /&gt;
* state of the engine: normal/congestion&lt;br /&gt;
* count: number of applications acting either as gsmSCF, either as HLR&lt;br /&gt;
* format: name of the application for which the following data is reported:&lt;br /&gt;
** Type: role of the application: SCF (communicates with real HLR), HLR (communicates with real gsmSCF)&lt;br /&gt;
** CurrentDlgs: number of current MAP dialogs handled by this application&lt;br /&gt;
** MAPCreated: number of sessions (dialogs) started by the MAP side&lt;br /&gt;
** UssdCreated: number of sessions (dialogs) started by the SMPP side&lt;br /&gt;
** DefaultRouted: number of dialogs for which failover took place&lt;br /&gt;
** MAPSent: number of MAP messages sent to gsmSCF/HLR. It doesn't count the ones sent via failover routing.&lt;br /&gt;
** MAPRecv: number of MAP messages received from gsmSCF/HLR&lt;br /&gt;
** USSDSent: number of sent ussd.execute/ussd.update/ussd.finalize messages towards the SMPP side.&lt;br /&gt;
** USSDRecv: number of received ussd.execute/ussd.update/usdd.notify messages from SMPP side.&lt;br /&gt;
** MAPAbort: number of dialog aborts generated by MAP side&lt;br /&gt;
** USSDAbort: number of dialog aborts generated by USSD side&lt;br /&gt;
** BuiltAbort: number of dialog aborts generated by the ussd_map module (e.g., not having a ussd.update message processed by anyone will cause ussd_map to generate session abort)&lt;br /&gt;
** MAPTimeouts: number of dialog timeouts generated by MAP side&lt;br /&gt;
** USSDTimeouts: number of timeouts reported by USSD side&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Module control commands'''&lt;br /&gt;
&lt;br /&gt;
The module offers the following control commands through the telnet console:&lt;br /&gt;
* ''control ussd_map appName print-msg [yes|no|verbose]'' : enable printing of received/sent map./ussd./messages.&lt;br /&gt;
* ''control ussd_map appName print-xml [yes|no|verbose]'' : enable printing of received/sent XMLs.&lt;br /&gt;
* ''control ussd_map appName export-xml-as [string|object|both]'' : change the way XML is set in the internal messages&lt;br /&gt;
* ''control ussd_map start_stats'' : begin gathering data for statistics&lt;br /&gt;
* ''control ussd_map stop_stats'' : stop gathering data for statistics&lt;br /&gt;
* ''control usdd_map stats'' : print statistic data per engine and each application in part. Data contains number of MAP messages handled per second, number of USSD messages handled per second, maximum number of current dialogs, number of timeouts and number of aborts.&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
The ysmpp module provides the following options for status command:&lt;br /&gt;
&lt;br /&gt;
'NOTE' the module_name can take the following values: smppserver or smppclient.&lt;br /&gt;
&lt;br /&gt;
* status module_name listeners&lt;br /&gt;
Prints the module listeners status in format: Address|Status|Reason.&lt;br /&gt;
&lt;br /&gt;
* status module_name sessions&lt;br /&gt;
Prints the status of the sessions in format: Id|State|BindMode|SystemId|IpAddress:Port|Congested|Incoming Queue|Outgoing Queue;&lt;br /&gt;
&lt;br /&gt;
** Id: The ID of the SMPP session. Can be used for routing.&lt;br /&gt;
** State: The state of the SMPP session.&lt;br /&gt;
** BindMode: The mode in which the session was bound. (Send/Recv/SendRecv)&lt;br /&gt;
** SystemId: The id with which the session has been authenticated. Can be used in routing.&lt;br /&gt;
** IpAddress:Port: The Ip Address and port of the remote end of the session.&lt;br /&gt;
** Congested: True if this session is in congestion state.&lt;br /&gt;
** Incoming Queue: The number of messages not processed in the incoming queue.&lt;br /&gt;
** Outgoing Queue: The number of messages not processed in the outgoing queue.&lt;br /&gt;
&lt;br /&gt;
*status module_name ussd overview&lt;br /&gt;
Prints the stats of the USSD sessions in format: Total|Active|Average Duration|Total Sent|Total Received|AverageTrafficPerSecond|EndedWithErrors|CongestionRefused&lt;br /&gt;
&lt;br /&gt;
** Total: the number of USSD sessions created since the starting of the program.&lt;br /&gt;
** Active: the number of USSD sessions currently active.&lt;br /&gt;
** Average Duration: average duration of a ussd session.&lt;br /&gt;
** Total Sent: total number of SMPP messages sent for USSD sessions.&lt;br /&gt;
** Total Received: total number of SMPP messages received for USSD sessions.&lt;br /&gt;
** AverageTrafficPerSecond: average traffic per second for USSD sessions.&lt;br /&gt;
** EndedWithErrors: the number of USSD sessions that ended with error.&lt;br /&gt;
** CongestionRefused: the number of USSD sessions refused because the server was overloaded.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* Mobile Application Part (MAP) specification: ETSI TE 129 002&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/USSD_GW</id>
		<title>USSD GW</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/USSD_GW"/>
				<updated>2014-02-06T15:48:59Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: /* ussd.execute */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an implementation an USSD gateway acting as a MAP Service Control Function (gsmSCF) and as a HLR at the same time. When communicating with a HLR or VLR, the YATE USSD GW acts as a gsmSCF. When communicating with a gsmSCF, the YATE USSDGW acts as a HLR.&lt;br /&gt;
The functionality of the USSD GW allows:&lt;br /&gt;
* redirecting of USSD requests arriving either from user side or gsmSCF side to a SMPP client where they can be altered.&lt;br /&gt;
* acting as a proxy for requests that need not be handled by SMPP clients or when the SMPP handling fails&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MAP USSD description ==&lt;br /&gt;
&lt;br /&gt;
In versions 2 and 3 of the GSM MAP protocol there are 3 operations used for USSD operations:&lt;br /&gt;
* processUnstructedSS-Request&lt;br /&gt;
* unstructuredSS-Request&lt;br /&gt;
* unstrusturedSS-Notify&lt;br /&gt;
&lt;br /&gt;
The are 2 scenarios for USSD operations:&lt;br /&gt;
* mobile initiated USSD requests&lt;br /&gt;
* network initiated USSD requests&lt;br /&gt;
&lt;br /&gt;
A TCAP dialog used by USSD is always terminated by the network side.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mobile initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobile initiated USSD requests are USSD requests started by the mobile subscriber.  &lt;br /&gt;
&lt;br /&gt;
A USSD request is started when receiving a TCAP BEGIN message containing the ''processUnstructedSS-Request'' Invoke operation. The request can be handled by the VLR, HLR or a gsmSCF. If the VLR does not handle the request, it will transmit it to the HLR. The HLR can either handle it itself or it can transmit it to a gsmSCF for handling.&lt;br /&gt;
&lt;br /&gt;
At this point, the network can either send a response to the request immediately or request additional information. In the first case, the handler of the request will send a TCAP End with ''processUnstructuredSS-Request'' ResultLast containing the result for the request. &lt;br /&gt;
In the latter case, the network will send a TCAP CONTINUE with ''unstructuredSS-Request'' Invoke operation. The response of the mobile subscriber to this request will be passed to the network in a TCAP CONTINUE with ''unstructuredSS-Request'' ResultLast component. At this point, if the network decides that it has enough information for providing the response to the user, it will send a TCAP END with ''processUnstructuredSS-Request'' ResultLast. Otherwise, it can request further information through another ''unstructuredSS-Request'' Invoke operation.&lt;br /&gt;
&lt;br /&gt;
=== Network initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD requests are USSD requests started by the network towards a certain subscriber.&lt;br /&gt;
&lt;br /&gt;
Requests made by the network can be of one of two types:&lt;br /&gt;
* user interaction requests&lt;br /&gt;
* network notification requests.&lt;br /&gt;
&lt;br /&gt;
User interaction requests are USSD requests that the network makes in which it requires some type of information back from the mobile subscriber. These are started by the network through a TCAP BEGIN containing an ''unstructuredSS-Request'' Invoke. The answer from the mobile subscriber will be received in a TCAP CONTINUE containing an ''unstructuredSS-Request'' ResultLast. If the network still wants to request further information, it will repeat the process. Otherwise, it will send a TCAP END to close the TCAP dialog.&lt;br /&gt;
&lt;br /&gt;
Network notification requests are USSD requests in which the network only sends a notification to the user. This is achieved by sending a TCAP BEGIN message containing a ''unstructuredSS-Notify'' Invoke. The mobile subscriber side will only respond with a TCAP CONTINUE containing an empty ''unstructuredSS-Notify'' in order to signal that the notification was received. The network will close the TCAP dialog through TCAP END.&lt;br /&gt;
&lt;br /&gt;
=== MAP USSD parameters ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following list describe common parameters used across all MAP USSD operations:&lt;br /&gt;
* ''destinationReference'': this parameter will contain either an MSISDN or an IMSI. In the case of mobile originated USSD request, this will identify the user which made the request. In the case of network initiated requests, it will identify the mobile user to be contacted for this request.&lt;br /&gt;
* ''ussd-String'': for ''processUnstructuredSS-Request'' Invoke it contains the dialed USSD code, for the result it would probably contain a message from the network detailing the result of the request. For ''unstructuredSS-Request'' Invoke it will contain a message asking for the user to choose some option and for the result it will contain the option chosen by the user. In the case of ''unstructuredSS-Notify'', this parameter will only be present in the Invoke.&lt;br /&gt;
* ''ussd-DataCodingScheme'': this is a parameter which specifies in which way the ''ussd-String'' parameter is encoded and it is present whenever ''ussd-String'' is present. E.g., this parameter would indicate if the ''ussd-String'' is encoded using GSM7bit encoding or UCS2.&lt;br /&gt;
&lt;br /&gt;
== SMPP USSD description ==&lt;br /&gt;
&lt;br /&gt;
'''TO DO'''&lt;br /&gt;
&lt;br /&gt;
== System description ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== System design ===&lt;br /&gt;
&lt;br /&gt;
In order to provide the specified functionality, the system makes use of the following YATE components:&lt;br /&gt;
* the SS7 stack  present in YATE &lt;br /&gt;
* the camel_map module which decodes/encodes MAP messages coming from the SS7 network to/from internal YATE messages containing MAP operations in XML form. Together with the SS7 layer this provides MAP connectivity with HLR/gsmSCF.&lt;br /&gt;
* the ussd_map module which takes internal MAP messsages decoded by the camel_map moduled and translates them to internal USSD messages. This module acts as gsmSCF towards a HLR and as a HLR towards a gsmSCF.&lt;br /&gt;
* the SMPP stack present in YATE (ysmpp module) which is able to catch internal USSD messages and transmit them over SMPP. It also translates SMPP messages into internal USSD messages.&lt;br /&gt;
* requests for new USSD sessions will go through routing to decide who should handle the request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following sections detail the behaviour of the system in the different USSD scenarios.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mobile originated USSD handling ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A user initiated USSD session is handled according to the following schema:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# HLR sends a ''processUnstructuredSS-Request (Invoke)'' for code *100#. camel_map decodes the ''ussd-String'' into ''ussd-Text=*100#''.&lt;br /&gt;
# the ussd_map module (gsmSCF side) processes the request received from the HLR and emits a ''call.route'' message with ''called=*100#''.&lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with the ''callto'' parameter set to the value returned from routing. ussd_map dispatches the ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will send  it to the target specified in ''callto'' parameter after the module prefix ''ysmppserver/''.&lt;br /&gt;
# The ysmpp module receives and process the received ''submit_sm'' message.&lt;br /&gt;
# The ysmpp module will send a ''call.route'' message with the ''called=*100#''.&lt;br /&gt;
# The ysmpp module emits a ''ussd.execute'' message with ''callto=retvalue from call.route'' message.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ussd.execute message and if it is the target of the message, meaning that ''callto'' starts with ''ussd_map/''. From that message it will build a map.message that it will send to the gsmSCF as a ''processUnstructuresSS-Request (Invoke)'' MAP message.&amp;lt;br&amp;gt;'''NOTE:''' From here on, the gsmSCF could handle the request in one of  two distinguished cases: one where the gsmSCF requires interaction with the mobile subscriber and one where the gsmSCF just needs to respond to the user request. The following steps detail the former case.&amp;lt;br&amp;gt;&lt;br /&gt;
# gsmSCF sends an ''unstructuredSS-Request (Invoke)'' to  request further information.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits an ''ussd.update'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.update'' message and confirms to the SMPP client that the message sent in step 5 was processed.&lt;br /&gt;
# The SMPP client should confirm the processing of the SMPP message sent in step 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver_sm'' message to the SMPP client with the menu received in ''ussd.update'' message.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message with the received menu.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message from SMPP client and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.update'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time in which the mobile subscribers responds can be quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway when receiving the response from the mobile subscriber.&lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 13.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 21.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 9 and 24 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''processUnstructuredSS-Request (ResultLast)''  for the initial user request.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''processUnstructuredSS-Request (ResultLast)'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 22 or 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 21 or 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 31.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 29.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''processUnstructuredSS-Request (ResultLast)''.&lt;br /&gt;
&lt;br /&gt;
==== Network initiated USSD Request ====&lt;br /&gt;
&lt;br /&gt;
A network initiated USSD session is handled as described in the following figure:&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
# gsmSCF sends''unstructuredSS-Request (Invoke)'' to USSD Gateway (HLR part) to present a menu for MSISDN 0015559191.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits a ''call.route'' message with called=0015559191. &lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with ''callto'' set to the route returned in the return value of the ''call.route'' message and dispatches an ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will then send to the target specified in the ''callto'&amp;quot; parameter after the ''ysmppserver'' module prefix.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message towards SMPP server.&lt;br /&gt;
# The SMPP server processes the received ''submit_sm'' message and dispatches a ''call.route'' message.&lt;br /&gt;
# After successfully dispatching of ''call.route'' message the SMPP server will dispatch a ''call.execute'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.execute'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time to receiving a response from the user after gsmSCF has requested user interaction could be possibly quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway &lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 4.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 13.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 1 and 16 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''TCAP END'' in order to finish the USSD session.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''TCAP END'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 13.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 22.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 21.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''END''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fallback/Proxy mode ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following images detail scenarios where the USSD GW is instructed to do failover.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when an HLR sends ''processUnstructuredSS-Request (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:''' &lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message. &lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD session fallback.&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when a gsmSCF sends a &amp;quot;unstructuredSS-Request/unstructuredSS-Notify (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:'''&lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message.&lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The SMPP USSD gateway will also be bypassed when the ''ussd_map'' module is configured to do failover for all requests.&lt;br /&gt;
&lt;br /&gt;
Any type of SMPP error received either in the result for the ''ussd.execute'' or in the first message back from SMPP that does not have a mapping on MAP will lead to the ''ussd_map'' module doing failover. Errors that would generate a failover are errors like timeout, session ended abnormally, unknown errors, congestion errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once ''ussd_map'' decides that failover should be done, it will use the original received message  from the HLR (MO case)/gsmSCF (MT case) and it will only alter the called address to be the one of the gsmSCF/HLR set for the failover.. The calling address will remain the one received from HLR/gsmSCF, the idea being that for the first message we want to pretend that we are the original gsmSCF/HLR. When the receiving end of this message will want to respond, it will use the calling address from the message. Seeing that the ''ussd_map'' module set it to the original calller's address, further messages exchanged in that dialog between HLR and gsmSCF will not pass through USSD GW again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Internal message API ====&lt;br /&gt;
&lt;br /&gt;
This section documents the YATE messages used internally by the USSD GW.&lt;br /&gt;
&lt;br /&gt;
===== call.route =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used by ussd_map and ysmpp module to determine a destination where a new USSD session should be sent for further processing.&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module when receiving a request for a new USSD session on MAP for ''ussd_map'' or on SMPP for ''ysmpp''.&lt;br /&gt;
''ussd_map'' will only send this message if default routing is not enabled from configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
* module&lt;br /&gt;
** type: string &lt;br /&gt;
** Name of the module which requested routing&lt;br /&gt;
* application&lt;br /&gt;
** type: string&lt;br /&gt;
** Name of the ussd_map application which sent this routing request&lt;br /&gt;
* route_type&lt;br /&gt;
** type: keyword, value: ussd &lt;br /&gt;
** Specifies routing type, in this case it'll be USSD routing&lt;br /&gt;
* smpp_session_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
* smpp_system_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* if the message was processed, the return value of the message indicates the destination of the subsequent ''ussd.execute'' message.&lt;br /&gt;
* if the message was not processed or it returned with error (signaled by the return value being either &amp;quot;-&amp;quot; or &amp;quot;error&amp;quot;)&lt;br /&gt;
** ''ussd_map'' will do failover&lt;br /&gt;
** ysmpp will close the SMPP session, indicating an error either set by the call.route or either set to the default unknown error indication.&lt;br /&gt;
&lt;br /&gt;
===== ussd.execute =====&lt;br /&gt;
&lt;br /&gt;
This message is used to begin a new USSD session:&lt;br /&gt;
* on SMPP, if the message is directed to the ''ysmpp'' module&lt;br /&gt;
* on MAP if the message is directed to the ''ussd_map'' module&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module after successful routing stage. In case of the ''ussd_map'' module, this is message is sent if the routing stage did not indicate failover necessity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* callto:  &lt;br /&gt;
** type : string&lt;br /&gt;
** It specifies the target module to process the message. The string should start with  'ysmppserver/' for the  ''ysmpp&amp;quot; module and with ''ussd_map/'' for the ''ussd_map'' module.&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier assigned for this USSD session by the entity that processed this message.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error returned if the message was not processed.&lt;br /&gt;
&lt;br /&gt;
Processing of this message will return failure:&lt;br /&gt;
* if the message will not be processed&lt;br /&gt;
* if the 'id' parameter is missing.&lt;br /&gt;
* in case of processing error &lt;br /&gt;
* in case of congestion&lt;br /&gt;
&lt;br /&gt;
===== ussd.update =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used for transmitting USSD messages during a USSD session. This type of message will be used after the initial stage of creating the session through ''ussd.execute'' has succeeded.&lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP CONTINUE message &lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will be refused if it is received after a ''ussd.finalize'' message.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a values not allowed in the context of the USSD session (e.g., sending a ''processUnstructuredSS-Request inside a ''ussd.update'' message)&lt;br /&gt;
&lt;br /&gt;
===== ussd.finalize =====&lt;br /&gt;
&lt;br /&gt;
This message is used to signal the termination of the USSD session. Successful processing of this message means that the USSD session was terminated and is no longer available. &lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP END/ABORT message depending upon the parameters received. A message containing an error that does not map to a MAP error will generate a TCAP ABORT.&lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client, a message that will usually contain a last message indication.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by 'peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a value not allowed in the context of the USSD session&lt;br /&gt;
&lt;br /&gt;
===== Keyword values =====&lt;br /&gt;
&lt;br /&gt;
This section details acceptable values for parameters listed as having type ''keyword''.&lt;br /&gt;
&lt;br /&gt;
* '''hlr.nature/vlr.nature/gsmscf.nature/destination_reference.nature'''&lt;br /&gt;
** unknown&lt;br /&gt;
** international&lt;br /&gt;
** national&lt;br /&gt;
** network-specific&lt;br /&gt;
** subscriber&lt;br /&gt;
** abbreviated&lt;br /&gt;
&lt;br /&gt;
* '''hlr.plan/vlr.plan/gsmscf.plan/destination_reference.plan'''&lt;br /&gt;
** unknown&lt;br /&gt;
** isdn&lt;br /&gt;
** data&lt;br /&gt;
** telex&lt;br /&gt;
** land-mobile&lt;br /&gt;
** national&lt;br /&gt;
** private&lt;br /&gt;
&lt;br /&gt;
* '''operation_type'''&lt;br /&gt;
** pssd: mapping of MAP v1 USSD operation ''processUnstructuredSS-Data'' and of SMPP operation ''PSSD''. &lt;br /&gt;
** pssr: mapping of MAP v2 USSD operation ''processUnstructuredSS-Request'' and of SMPP operation ''PSSR''.&lt;br /&gt;
** ussr: mapping of MAP v2 USSD operation ''unstructuredSS-Request'' and of SMPP operation ''USSR&amp;quot;.&lt;br /&gt;
** ussn: mapping of MAP v2 USSD operation ''unstructuredSS-Notify'' and of SMPP operation ''USSN''.&lt;br /&gt;
&lt;br /&gt;
* '''error'''&lt;br /&gt;
** invalid_logic:  error reported when required processing does not follow USSD rules (e.g., MT request starting with ''processUnstructuredSS-Requests'')&lt;br /&gt;
** system_failure: error mapping for MAP error ''systemFailure''.&lt;br /&gt;
** data_missing: error mapping for  MAP error ''dataMissing''.&lt;br /&gt;
** unexpected_data: error mapping for MAP error ''unexpectedDataValue''.&lt;br /&gt;
** unknown_alphabet: error mapping for MAP error ''unknownAlphabet''.&lt;br /&gt;
** absent_subscriber: error mapping for MAP error ''absentSubscriber''.&lt;br /&gt;
** illegal_subscriber: error mapping for MAP error ''illegalSubscriber''.&lt;br /&gt;
** illegal_equipment: error mapping for MAP error ''illegalEquipment''.&lt;br /&gt;
** ussd_busy: error mapping for MAP error ''ussd-Busy''.&lt;br /&gt;
** call_barred: error mapping for MAP error ''callBarred''.&lt;br /&gt;
** network_failure: error signaling message transmission failure due to  connectivity issues either on the SS7 side or SMPP side.&lt;br /&gt;
** timeout_expired: error signaling a  request timeout occurrence.&lt;br /&gt;
** ussd_sess_end_abnormally: error signaling USSD session termination due to an unknown cause. Mapping for this error implies a TCAP Abort either being generated of received. &lt;br /&gt;
** unknown_error: error specified when there is no available mapping for an errror from SMPP to MAP or vice versa.&lt;br /&gt;
** throttling_error: error signaling that a message failed to be processed due to processing side being in congestion state.&lt;br /&gt;
** protocol_error: SMPP generic error. This error is put whenever there is a SMPP specific error that cannot be mapped into one of the other errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== SMPP custom parameters ====&lt;br /&gt;
&lt;br /&gt;
* 0x1502 =&amp;gt; IMSI;&lt;br /&gt;
* 0x1503 =&amp;gt; VLR Type of Number;&lt;br /&gt;
* 0x1504 =&amp;gt; VLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1505 =&amp;gt; VLR address;&lt;br /&gt;
* 0x1506 =&amp;gt; GSM SCF Type of Number;&lt;br /&gt;
* 0x1507 =&amp;gt; GSM SCF Numbering Plan Indicator;&lt;br /&gt;
* 0x1508 =&amp;gt; GSM_SCF address;&lt;br /&gt;
* 0x1509 =&amp;gt; Destination Reference Type of Number;&lt;br /&gt;
* 0x150a =&amp;gt; Destination Reference Numbering Plan Indicator;&lt;br /&gt;
* 0x150b =&amp;gt; Destination Reference;&lt;br /&gt;
* 0x150c =&amp;gt; MSISDN&lt;br /&gt;
* 0x150d =&amp;gt; Alerting Pattern&lt;br /&gt;
* 0x1800 =&amp;gt; HLR Type of Number;&lt;br /&gt;
* 0x1801 =&amp;gt; HLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1802 =&amp;gt; HLR address.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
==== ysigchan module ====&lt;br /&gt;
&lt;br /&gt;
In order to have MAP connectivity, TCAP instances must be configured in ''ysigchan.conf'': &lt;br /&gt;
&lt;br /&gt;
 ; Example of a SS7 Transaction Capabilities Application Part&lt;br /&gt;
 ; This component is created when encountering a section of this kind&lt;br /&gt;
 ;[ss7tcap]&lt;br /&gt;
 ; type: keyword: identifies the component as a SS7 Transfer Capabilities Application Part&lt;br /&gt;
 ; type = ss7-tcap-ansi for ANSI TCAP&lt;br /&gt;
 ; type = ss7-tcap-itu for ITU TCAP&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; local_SSN: local SubSystem Number. Mandatory&lt;br /&gt;
 ;local_SSN=&lt;br /&gt;
 &lt;br /&gt;
 ; default_remote_SSN: remote SubSystem Number to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_SSN=&lt;br /&gt;
  &lt;br /&gt;
 ; default_remote_pointcode: remote Point Code to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_pointcode=&lt;br /&gt;
 &lt;br /&gt;
 ; pointcodetype: remote Point Code type. See above documentation for available types&lt;br /&gt;
 ;pointcodetype=&lt;br /&gt;
 &lt;br /&gt;
 ; sccp: Name of the SCCP component to create and be used by this TCAP&lt;br /&gt;
 ; A section with the name given here must exist in order to configure the SCCP level&lt;br /&gt;
 ;sccp=&lt;br /&gt;
 &lt;br /&gt;
 ; default_hopcounter: HopCounter provided to SCCP if the application does not provide one&lt;br /&gt;
 ; Values range 1-15, 0 or boolean false disables, boolean true sets to 15&lt;br /&gt;
 ; A non-zero value will force using XUDT or LUDT instead of UDT messages&lt;br /&gt;
 ;default_hopcounter=false&lt;br /&gt;
 &lt;br /&gt;
 ; transact_timeout: Time in seconds to timeout a TCAP transaction after no more activity was registered on it&lt;br /&gt;
 ; NOTE: Values below 15 seconds will be ignored and the timer will assume the default value.&lt;br /&gt;
 ; Defaults to 300 seconds&lt;br /&gt;
 ;transact_timeout=300&lt;br /&gt;
 &lt;br /&gt;
 ; max_timeout_checks: integer: Maximum number of timeout checks done on a transaction without starting the transaction&lt;br /&gt;
 ;  timer before forcefully starting the transaction timer&lt;br /&gt;
 ; Defaults to 10&lt;br /&gt;
 ;max_timeout_checks=10 &lt;br /&gt;
 &lt;br /&gt;
 ; timeout_check: Time interval in milliseconds to check for timeouts.&lt;br /&gt;
 ; Default to 100 ms&lt;br /&gt;
 ;timeout_check=100 &lt;br /&gt;
 &lt;br /&gt;
 ; floodevents: int: How many queued incoming TCAP messages trigger a congestion warning and the drop mechanism&lt;br /&gt;
 ;  for Unidirectional/Begin/QueryWithPermission/QueryWithoutPermission messages.&lt;br /&gt;
 ;  Exit from congestion will take place when there are less the floodevents/4 messages in the queue&lt;br /&gt;
 ; NOTE! Setting this parameter to 0 will disable the congestion warning and protection. Setting it to one will &lt;br /&gt;
 ;  be overriden and floodevents will be set to 2.&lt;br /&gt;
 ;floodevents=1000&lt;br /&gt;
 &lt;br /&gt;
 ;print-messages: Boolean to enable/disable printing of decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ;extended-debug: Boolean to enable/disable printing of the step-by-step decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload. print-messages must be true.&lt;br /&gt;
 ;extended-debug=false&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for keeping the list of current transactions&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
 [tcap-scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=147                                                                                                                                &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                     &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap-hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=7                                                                                                                                  &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Further configuration for SS7 connectivity is required (SCCP, MTP3, etc.).&lt;br /&gt;
&lt;br /&gt;
==== camel_map module ====&lt;br /&gt;
&lt;br /&gt;
Configuring of tracking IDs is done in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ;track_id: string: Shared engine variable name used to obtain a unique tracking ID for TCAP transactions&lt;br /&gt;
 ; If not set, the module will not set a tracking ID for the TCAP transaction&lt;br /&gt;
 ;track_id=&lt;br /&gt;
 &lt;br /&gt;
 ;track_id_base: string: Optional string with which to prefix the tracking ID&lt;br /&gt;
 ; This setting has no effect if track_id is not set&lt;br /&gt;
 ;track_id_base=&lt;br /&gt;
&lt;br /&gt;
In order to allow communication over MAP through SS7, sections configurating application should exist for each role of the ussd_map module (gsmSCF/HLR). A ''camel_map.conf'' section configuring an application looks like this:&lt;br /&gt;
 &lt;br /&gt;
 ;[local appName]&lt;br /&gt;
 ; This section configures a local application which transmits the XML messages as internal Yate messages&lt;br /&gt;
 &lt;br /&gt;
 ; translator: string: name of translator to be used by this application.&lt;br /&gt;
 ; Must be one one the [tcap ...] sections configured in the camel_map.conf file.&lt;br /&gt;
 ;translator=&lt;br /&gt;
  &lt;br /&gt;
 ; capabilities: string: List of capabilities separated by commas which this application supports&lt;br /&gt;
 ;capabilities=&lt;br /&gt;
  &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into a Yate message&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - string: pass the XML as a string&lt;br /&gt;
 ;  - object: pass the XML as an object&lt;br /&gt;
 ;  - both: pass the XML as a string and object&lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; enable: bool: Enable this application&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
&lt;br /&gt;
The translator setting refers to a section of the type defined below which configures atachement to a TCAP instance&lt;br /&gt;
&lt;br /&gt;
 ;[tcap map]&lt;br /&gt;
 ; This section configures a TCAP User MAP/CAMEL protocol translator&lt;br /&gt;
 &lt;br /&gt;
 ; enable: bool: Enable this translator&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of TCAP User &lt;br /&gt;
 ; Allowed values are MAP or CAMEL&lt;br /&gt;
 ;type=MAP&lt;br /&gt;
 &lt;br /&gt;
 ; host: IP address: Address on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ;host=127.0.0.1 &lt;br /&gt;
 &lt;br /&gt;
 ; port: integer: Port on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ; Note: setting port to 0 will disable the listener, so it will not accept TCP applications&lt;br /&gt;
 ;port=5555&lt;br /&gt;
 &lt;br /&gt;
 ; tcap: string: Name of TCAP to which this TCAP user should attach itself to for the SS7 communication&lt;br /&gt;
 ;tcap=&lt;br /&gt;
 &lt;br /&gt;
 ; add-encoding: bool: Always add encoding attribute to XML elements for decoded parameters&lt;br /&gt;
 ;add-encoding=default from [general]&lt;br /&gt;
 &lt;br /&gt;
 ; add-timestamp: bool: Add to XML timestamps used for estimating application latency&lt;br /&gt;
 ;add-timestamp=default from [general] &lt;br /&gt;
 &lt;br /&gt;
 ; print-messages: bool: Debug option to print TCAP and XML messages. This option is applicable on reload.&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-string: string: Specifies what the ussd-String parameter will contain as data&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - octets: ussd-String will contain the octets as they were received&lt;br /&gt;
 ;  - text: ussd-String will contain the GSM7Bit decoded text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-string=text&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-decode: string: Specifies what ussd-String parameters should be decoded into text&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - none: ussd-String parameters will never be decoded into text&lt;br /&gt;
 ;  - first: ussd-String in a TCAP Begin message will be decoded into text&lt;br /&gt;
 ;  - all: all ussd-String parameters will be decoded into text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-decode=all&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for mapping of TCAP transactions to applications&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For load sharing (especially in cases of high loads), you can configure multiple applications using the same translator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 applications acting as a gsmSCF, each one attached to the TCAP instance with gsmSCF SSN, and 2 applications as HLR, each one attached to the TCAP instance with HLR SSN 6:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 track_id=ussdgw&lt;br /&gt;
 track_id_base=ussdgw/&lt;br /&gt;
 &lt;br /&gt;
 [tcap scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-scf                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false                                                                                                                           &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-hlr                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false   &lt;br /&gt;
 &lt;br /&gt;
 [local ussdSCF1]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=first                                                                                                                            &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [local ussdSCF2]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=first               &lt;br /&gt;
 &lt;br /&gt;
 [local ussdHLR1]&lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=first                                                                                                                            &lt;br /&gt;
 &lt;br /&gt;
 [local ussdHLR2]                                                                                                                             &lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=first&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
The module is configured through ''ussd_map.conf''. The configuration file sets timeout parameters and processing threads parameters in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList for keeping dialogs&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
 &lt;br /&gt;
 ; component_ttl: integer: Component time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; Defaults to 600000 (10 minutes)&lt;br /&gt;
 ;component_ttl=600000&lt;br /&gt;
 &lt;br /&gt;
 ; dialog_idle_ttl: integer: Dialog idle (nothing sent/received) time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; It can be set to 0 to keep it alive until the remote party terminates the dialog&lt;br /&gt;
 ; Defaults to 86400000 (1 day)&lt;br /&gt;
 ;dialog_idle_ttl=86400000&lt;br /&gt;
&lt;br /&gt;
 ; dialog_ended_ttl: integer: Ended dialog time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000.&lt;br /&gt;
 ; It can be set to 0 to remove the dialog after termination&lt;br /&gt;
 ; Defaults to 0&lt;br /&gt;
 ;dialog_ended_ttl=0&lt;br /&gt;
 &lt;br /&gt;
 ; dispatcher_maxthreads: integer: Maximum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ; NOTE: if the value is set to 0, the module will enqueue the messages into YATE's engine.&lt;br /&gt;
 ;dispatcher_maxthreads=0&lt;br /&gt;
&lt;br /&gt;
 ; dispatcher_minthreads: integer: Minimum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ;dispatcher_minthreads=1&lt;br /&gt;
&lt;br /&gt;
 ;dispatcher_priority: string: Default priority of message dispatch threads&lt;br /&gt;
 ;dispatcher_priority=normal&lt;br /&gt;
&lt;br /&gt;
 ; floodevents: integer: Threshold for signaling congestion when the number of messages waiting to be dispatched exceeds it.&lt;br /&gt;
 ; When entering congestion, all new MAP dialogs and USSD sessions will be refused.&lt;br /&gt;
 ; 0 disables the mechanism&lt;br /&gt;
 ;floodevents=0&lt;br /&gt;
&lt;br /&gt;
 ; congestion_exit_factor: double: Factor used to calculate the exit congestion threshold&lt;br /&gt;
 ; NOTE: if the factor results in a exit congestion threshold of 0 or greater than floodevents, &lt;br /&gt;
 ; the setting will be overriden and the exit congestion threshold will be set to 1.&lt;br /&gt;
 ;congestion_exit_factor=0.5&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Timeout settings should be correlated with timeout settings in TCAP and SMPP, each having its own timeout mechanism.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gateway applications which do the MAP &amp;lt;-&amp;gt; USSD translation are configured through section like the one below:&lt;br /&gt;
&lt;br /&gt;
 [appName]&lt;br /&gt;
 ; section name is the name of the camel_map application, it must correspond to a [local appName] section in camel_map &lt;br /&gt;
&lt;br /&gt;
 ; enable: boolean: Enable this application&lt;br /&gt;
 ; Defaults to yes&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of MAP &amp;lt;-&amp;gt; USSD translator: &lt;br /&gt;
 ;  - SCF means that is the part that receives new dialogs from the HLR (user initiated USSD)&lt;br /&gt;
 ;  - HLR is the part that receives new dialogs from gsmSCF (network initiated USSD)&lt;br /&gt;
 ; This setting cannot be changed on reload.&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into &lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; print_msg: boolean: Print sent/received messages to output&lt;br /&gt;
 ;print_msg=no&lt;br /&gt;
  &lt;br /&gt;
 ; print_xml: boolean: Print sent/received XML data to output&lt;br /&gt;
 ;print_xml=no&lt;br /&gt;
 &lt;br /&gt;
 ; local_addr. : prefix: Parameters prefixed with this set the local SCCP address of this application &lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; local_addr.CallingPartyAddress.route=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.ssn=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.pointcode=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.nature=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.plan=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.translation=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.encoding= &lt;br /&gt;
 &lt;br /&gt;
 ; default_routing: bool : Do routing to default address for all messages&lt;br /&gt;
 ; default_routing=no&lt;br /&gt;
 &lt;br /&gt;
 ; default_addr. : prefix: parameters prefixed with this will be used as the default SCCP called address&lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; default_addr.application=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.route=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.ssn=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.pointcode=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.nature=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.translation=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.encoding=&lt;br /&gt;
 &lt;br /&gt;
 ; hlr_ssn: integer: The SSN expected in the calling address from a HLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;hlr_ssn=6&lt;br /&gt;
 &lt;br /&gt;
 ; vlr_ssn: integer: The SSN expected in the calling address from a VLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;vlr_ssn=7&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each section should have its own equivalent in ''camel_map.conf''.&lt;br /&gt;
In the USSD GW scenario, at least tho applications are needed, one acting as SCF, one as HLR. For load sharing multiple gsmSCF and HLR applications can be configured (see the configuration example below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 gsmSCF applications and 2 HLR applications, each one corresponding with a application section in the ''camel_map.conf'' example:&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 component_ttl=600000                                                                                                                         &lt;br /&gt;
 dialog_ended_ttl=0                                                                                                                           &lt;br /&gt;
 dispatcher_maxthreads=10                                                                                                                     &lt;br /&gt;
 dispatcher_minthreads=5                                                                                                                      &lt;br /&gt;
 ;dispatcher_priority=normal                                                                                                                  &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [ussdSCF1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
&lt;br /&gt;
 [ussdSCF2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
 &lt;br /&gt;
 [ussdHLR1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                         &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd                                                                                              &lt;br /&gt;
                                                   &lt;br /&gt;
 [ussdHLR2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
TODO - configuration explanations&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example''''&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
 server=smpp-server                                                                                                                           &lt;br /&gt;
 track_id=ussdgw                                                                                                                              &lt;br /&gt;
 track_id_base=ussdgw/                                                                                                                        &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [smpp-server]                                                                                                                                &lt;br /&gt;
 enable=true                                                                                                                                  &lt;br /&gt;
 session_responseinterval=600000                                                                                                              &lt;br /&gt;
 sessionset_process_max=1                                                                                                                     &lt;br /&gt;
 codec_warndefaults=false                                                                                                                     &lt;br /&gt;
 print-messages=no                                                                                                                            &lt;br /&gt;
                                                                                                                                            &lt;br /&gt;
 [listenerserver server]                                                                                                                      &lt;br /&gt;
 ;enable=yes                                                                                                                                  &lt;br /&gt;
 addr=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=12345    &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Monitoring ===&lt;br /&gt;
&lt;br /&gt;
This section details comands through which the state of the USSD GW can be monitored.&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
* '''Congestion state monitoring'''&lt;br /&gt;
&lt;br /&gt;
The ''ussd_map'' module will generate an alarm when entering/exiting a congestion state. If SNMP support is enabled, this will generate a trap on SNMP.&lt;br /&gt;
The congestion status is also reported in the ''state'' entry in the result of the module status command.&lt;br /&gt;
&lt;br /&gt;
* '''Module status'''&lt;br /&gt;
&lt;br /&gt;
The module reports its status through the following command in the YATE telnet console:&lt;br /&gt;
&lt;br /&gt;
 status ussd_map&lt;br /&gt;
&lt;br /&gt;
The command will print the following information:&lt;br /&gt;
&lt;br /&gt;
 workers=count_of_dispatching_threads,messages=count_msg,dialogs=count_of_dialogs,state=normal,count=count_of_applications;format=Type | CurrentDlgs| MAPCreated | UssdCreated |DefaultRouted | MAPSent | MapRecv | USSDSent | USSDRecv | MAPAbort | USSDAbort | BuiltAbort | MAPTimeouts | USSDTimeouts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
* workers: current number of used dispatching threads from the maximum configured pool (e.g., 3/10 means 3 threads are used of a pool of 10)&lt;br /&gt;
* messages: count of messages waiting on the dispatching queue of the engine&lt;br /&gt;
* dialogs: total number of USSD sessions currently handled by all applications&lt;br /&gt;
* state of the engine: normal/congestion&lt;br /&gt;
* count: number of applications acting either as gsmSCF, either as HLR&lt;br /&gt;
* format: name of the application for which the following data is reported:&lt;br /&gt;
** Type: role of the application: SCF (communicates with real HLR), HLR (communicates with real gsmSCF)&lt;br /&gt;
** CurrentDlgs: number of current MAP dialogs handled by this application&lt;br /&gt;
** MAPCreated: number of sessions (dialogs) started by the MAP side&lt;br /&gt;
** UssdCreated: number of sessions (dialogs) started by the SMPP side&lt;br /&gt;
** DefaultRouted: number of dialogs for which failover took place&lt;br /&gt;
** MAPSent: number of MAP messages sent to gsmSCF/HLR. It doesn't count the ones sent via failover routing.&lt;br /&gt;
** MAPRecv: number of MAP messages received from gsmSCF/HLR&lt;br /&gt;
** USSDSent: number of sent ussd.execute/ussd.update/ussd.finalize messages towards the SMPP side.&lt;br /&gt;
** USSDRecv: number of received ussd.execute/ussd.update/usdd.notify messages from SMPP side.&lt;br /&gt;
** MAPAbort: number of dialog aborts generated by MAP side&lt;br /&gt;
** USSDAbort: number of dialog aborts generated by USSD side&lt;br /&gt;
** BuiltAbort: number of dialog aborts generated by the ussd_map module (e.g., not having a ussd.update message processed by anyone will cause ussd_map to generate session abort)&lt;br /&gt;
** MAPTimeouts: number of dialog timeouts generated by MAP side&lt;br /&gt;
** USSDTimeouts: number of timeouts reported by USSD side&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Module control commands'''&lt;br /&gt;
&lt;br /&gt;
The module offers the following control commands through the telnet console:&lt;br /&gt;
* ''control ussd_map appName print-msg [yes|no|verbose]'' : enable printing of received/sent map./ussd./messages.&lt;br /&gt;
* ''control ussd_map appName print-xml [yes|no|verbose]'' : enable printing of received/sent XMLs.&lt;br /&gt;
* ''control ussd_map appName export-xml-as [string|object|both]'' : change the way XML is set in the internal messages&lt;br /&gt;
* ''control ussd_map start_stats'' : begin gathering data for statistics&lt;br /&gt;
* ''control ussd_map stop_stats'' : stop gathering data for statistics&lt;br /&gt;
* ''control usdd_map stats'' : print statistic data per engine and each application in part. Data contains number of MAP messages handled per second, number of USSD messages handled per second, maximum number of current dialogs, number of timeouts and number of aborts.&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
The ysmpp module provides the following options for status command:&lt;br /&gt;
&lt;br /&gt;
'NOTE' the module_name can take the following values: smppserver or smppclient.&lt;br /&gt;
&lt;br /&gt;
* status module_name listeners&lt;br /&gt;
Prints the module listeners status in format: Address|Status|Reason.&lt;br /&gt;
&lt;br /&gt;
* status module_name sessions&lt;br /&gt;
Prints the status of the sessions in format: Id|State|BindMode|SystemId|IpAddress:Port|Congested|Incoming Queue|Outgoing Queue;&lt;br /&gt;
&lt;br /&gt;
** Id: The ID of the SMPP session. Can be used for routing.&lt;br /&gt;
** State: The state of the SMPP session.&lt;br /&gt;
** BindMode: The mode in which the session was bound. (Send/Recv/SendRecv)&lt;br /&gt;
** SystemId: The id with which the session has been authenticated. Can be used in routing.&lt;br /&gt;
** IpAddress:Port: The Ip Address and port of the remote end of the session.&lt;br /&gt;
** Congested: True if this session is in congestion state.&lt;br /&gt;
** Incoming Queue: The number of messages not processed in the incoming queue.&lt;br /&gt;
** Outgoing Queue: The number of messages not processed in the outgoing queue.&lt;br /&gt;
&lt;br /&gt;
*status module_name ussd overview&lt;br /&gt;
Prints the stats of the USSD sessions in format: Total|Active|Average Duration|Total Sent|Total Received|AverageTrafficPerSecond|EndedWithErrors|CongestionRefused&lt;br /&gt;
&lt;br /&gt;
** Total: the number of USSD sessions created since the starting of the program.&lt;br /&gt;
** Active: the number of USSD sessions currently active.&lt;br /&gt;
** Average Duration: average duration of a ussd session.&lt;br /&gt;
** Total Sent: total number of SMPP messages sent for USSD sessions.&lt;br /&gt;
** Total Received: total number of SMPP messages received for USSD sessions.&lt;br /&gt;
** AverageTrafficPerSecond: average traffic per second for USSD sessions.&lt;br /&gt;
** EndedWithErrors: the number of USSD sessions that ended with error.&lt;br /&gt;
** CongestionRefused: the number of USSD sessions refused because the server was overloaded.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* Mobile Application Part (MAP) specification: ETSI TE 129 002&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/USSD_GW</id>
		<title>USSD GW</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/USSD_GW"/>
				<updated>2014-02-06T15:48:35Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: /* ussd.update */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an implementation an USSD gateway acting as a MAP Service Control Function (gsmSCF) and as a HLR at the same time. When communicating with a HLR or VLR, the YATE USSD GW acts as a gsmSCF. When communicating with a gsmSCF, the YATE USSDGW acts as a HLR.&lt;br /&gt;
The functionality of the USSD GW allows:&lt;br /&gt;
* redirecting of USSD requests arriving either from user side or gsmSCF side to a SMPP client where they can be altered.&lt;br /&gt;
* acting as a proxy for requests that need not be handled by SMPP clients or when the SMPP handling fails&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MAP USSD description ==&lt;br /&gt;
&lt;br /&gt;
In versions 2 and 3 of the GSM MAP protocol there are 3 operations used for USSD operations:&lt;br /&gt;
* processUnstructedSS-Request&lt;br /&gt;
* unstructuredSS-Request&lt;br /&gt;
* unstrusturedSS-Notify&lt;br /&gt;
&lt;br /&gt;
The are 2 scenarios for USSD operations:&lt;br /&gt;
* mobile initiated USSD requests&lt;br /&gt;
* network initiated USSD requests&lt;br /&gt;
&lt;br /&gt;
A TCAP dialog used by USSD is always terminated by the network side.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mobile initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobile initiated USSD requests are USSD requests started by the mobile subscriber.  &lt;br /&gt;
&lt;br /&gt;
A USSD request is started when receiving a TCAP BEGIN message containing the ''processUnstructedSS-Request'' Invoke operation. The request can be handled by the VLR, HLR or a gsmSCF. If the VLR does not handle the request, it will transmit it to the HLR. The HLR can either handle it itself or it can transmit it to a gsmSCF for handling.&lt;br /&gt;
&lt;br /&gt;
At this point, the network can either send a response to the request immediately or request additional information. In the first case, the handler of the request will send a TCAP End with ''processUnstructuredSS-Request'' ResultLast containing the result for the request. &lt;br /&gt;
In the latter case, the network will send a TCAP CONTINUE with ''unstructuredSS-Request'' Invoke operation. The response of the mobile subscriber to this request will be passed to the network in a TCAP CONTINUE with ''unstructuredSS-Request'' ResultLast component. At this point, if the network decides that it has enough information for providing the response to the user, it will send a TCAP END with ''processUnstructuredSS-Request'' ResultLast. Otherwise, it can request further information through another ''unstructuredSS-Request'' Invoke operation.&lt;br /&gt;
&lt;br /&gt;
=== Network initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD requests are USSD requests started by the network towards a certain subscriber.&lt;br /&gt;
&lt;br /&gt;
Requests made by the network can be of one of two types:&lt;br /&gt;
* user interaction requests&lt;br /&gt;
* network notification requests.&lt;br /&gt;
&lt;br /&gt;
User interaction requests are USSD requests that the network makes in which it requires some type of information back from the mobile subscriber. These are started by the network through a TCAP BEGIN containing an ''unstructuredSS-Request'' Invoke. The answer from the mobile subscriber will be received in a TCAP CONTINUE containing an ''unstructuredSS-Request'' ResultLast. If the network still wants to request further information, it will repeat the process. Otherwise, it will send a TCAP END to close the TCAP dialog.&lt;br /&gt;
&lt;br /&gt;
Network notification requests are USSD requests in which the network only sends a notification to the user. This is achieved by sending a TCAP BEGIN message containing a ''unstructuredSS-Notify'' Invoke. The mobile subscriber side will only respond with a TCAP CONTINUE containing an empty ''unstructuredSS-Notify'' in order to signal that the notification was received. The network will close the TCAP dialog through TCAP END.&lt;br /&gt;
&lt;br /&gt;
=== MAP USSD parameters ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following list describe common parameters used across all MAP USSD operations:&lt;br /&gt;
* ''destinationReference'': this parameter will contain either an MSISDN or an IMSI. In the case of mobile originated USSD request, this will identify the user which made the request. In the case of network initiated requests, it will identify the mobile user to be contacted for this request.&lt;br /&gt;
* ''ussd-String'': for ''processUnstructuredSS-Request'' Invoke it contains the dialed USSD code, for the result it would probably contain a message from the network detailing the result of the request. For ''unstructuredSS-Request'' Invoke it will contain a message asking for the user to choose some option and for the result it will contain the option chosen by the user. In the case of ''unstructuredSS-Notify'', this parameter will only be present in the Invoke.&lt;br /&gt;
* ''ussd-DataCodingScheme'': this is a parameter which specifies in which way the ''ussd-String'' parameter is encoded and it is present whenever ''ussd-String'' is present. E.g., this parameter would indicate if the ''ussd-String'' is encoded using GSM7bit encoding or UCS2.&lt;br /&gt;
&lt;br /&gt;
== SMPP USSD description ==&lt;br /&gt;
&lt;br /&gt;
'''TO DO'''&lt;br /&gt;
&lt;br /&gt;
== System description ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== System design ===&lt;br /&gt;
&lt;br /&gt;
In order to provide the specified functionality, the system makes use of the following YATE components:&lt;br /&gt;
* the SS7 stack  present in YATE &lt;br /&gt;
* the camel_map module which decodes/encodes MAP messages coming from the SS7 network to/from internal YATE messages containing MAP operations in XML form. Together with the SS7 layer this provides MAP connectivity with HLR/gsmSCF.&lt;br /&gt;
* the ussd_map module which takes internal MAP messsages decoded by the camel_map moduled and translates them to internal USSD messages. This module acts as gsmSCF towards a HLR and as a HLR towards a gsmSCF.&lt;br /&gt;
* the SMPP stack present in YATE (ysmpp module) which is able to catch internal USSD messages and transmit them over SMPP. It also translates SMPP messages into internal USSD messages.&lt;br /&gt;
* requests for new USSD sessions will go through routing to decide who should handle the request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following sections detail the behaviour of the system in the different USSD scenarios.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mobile originated USSD handling ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A user initiated USSD session is handled according to the following schema:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# HLR sends a ''processUnstructuredSS-Request (Invoke)'' for code *100#. camel_map decodes the ''ussd-String'' into ''ussd-Text=*100#''.&lt;br /&gt;
# the ussd_map module (gsmSCF side) processes the request received from the HLR and emits a ''call.route'' message with ''called=*100#''.&lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with the ''callto'' parameter set to the value returned from routing. ussd_map dispatches the ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will send  it to the target specified in ''callto'' parameter after the module prefix ''ysmppserver/''.&lt;br /&gt;
# The ysmpp module receives and process the received ''submit_sm'' message.&lt;br /&gt;
# The ysmpp module will send a ''call.route'' message with the ''called=*100#''.&lt;br /&gt;
# The ysmpp module emits a ''ussd.execute'' message with ''callto=retvalue from call.route'' message.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ussd.execute message and if it is the target of the message, meaning that ''callto'' starts with ''ussd_map/''. From that message it will build a map.message that it will send to the gsmSCF as a ''processUnstructuresSS-Request (Invoke)'' MAP message.&amp;lt;br&amp;gt;'''NOTE:''' From here on, the gsmSCF could handle the request in one of  two distinguished cases: one where the gsmSCF requires interaction with the mobile subscriber and one where the gsmSCF just needs to respond to the user request. The following steps detail the former case.&amp;lt;br&amp;gt;&lt;br /&gt;
# gsmSCF sends an ''unstructuredSS-Request (Invoke)'' to  request further information.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits an ''ussd.update'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.update'' message and confirms to the SMPP client that the message sent in step 5 was processed.&lt;br /&gt;
# The SMPP client should confirm the processing of the SMPP message sent in step 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver_sm'' message to the SMPP client with the menu received in ''ussd.update'' message.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message with the received menu.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message from SMPP client and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.update'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time in which the mobile subscribers responds can be quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway when receiving the response from the mobile subscriber.&lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 13.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 21.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 9 and 24 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''processUnstructuredSS-Request (ResultLast)''  for the initial user request.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''processUnstructuredSS-Request (ResultLast)'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 22 or 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 21 or 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 31.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 29.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''processUnstructuredSS-Request (ResultLast)''.&lt;br /&gt;
&lt;br /&gt;
==== Network initiated USSD Request ====&lt;br /&gt;
&lt;br /&gt;
A network initiated USSD session is handled as described in the following figure:&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
# gsmSCF sends''unstructuredSS-Request (Invoke)'' to USSD Gateway (HLR part) to present a menu for MSISDN 0015559191.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits a ''call.route'' message with called=0015559191. &lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with ''callto'' set to the route returned in the return value of the ''call.route'' message and dispatches an ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will then send to the target specified in the ''callto'&amp;quot; parameter after the ''ysmppserver'' module prefix.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message towards SMPP server.&lt;br /&gt;
# The SMPP server processes the received ''submit_sm'' message and dispatches a ''call.route'' message.&lt;br /&gt;
# After successfully dispatching of ''call.route'' message the SMPP server will dispatch a ''call.execute'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.execute'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time to receiving a response from the user after gsmSCF has requested user interaction could be possibly quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway &lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 4.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 13.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 1 and 16 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''TCAP END'' in order to finish the USSD session.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''TCAP END'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 13.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 22.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 21.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''END''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fallback/Proxy mode ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following images detail scenarios where the USSD GW is instructed to do failover.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when an HLR sends ''processUnstructuredSS-Request (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:''' &lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message. &lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD session fallback.&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when a gsmSCF sends a &amp;quot;unstructuredSS-Request/unstructuredSS-Notify (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:'''&lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message.&lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The SMPP USSD gateway will also be bypassed when the ''ussd_map'' module is configured to do failover for all requests.&lt;br /&gt;
&lt;br /&gt;
Any type of SMPP error received either in the result for the ''ussd.execute'' or in the first message back from SMPP that does not have a mapping on MAP will lead to the ''ussd_map'' module doing failover. Errors that would generate a failover are errors like timeout, session ended abnormally, unknown errors, congestion errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once ''ussd_map'' decides that failover should be done, it will use the original received message  from the HLR (MO case)/gsmSCF (MT case) and it will only alter the called address to be the one of the gsmSCF/HLR set for the failover.. The calling address will remain the one received from HLR/gsmSCF, the idea being that for the first message we want to pretend that we are the original gsmSCF/HLR. When the receiving end of this message will want to respond, it will use the calling address from the message. Seeing that the ''ussd_map'' module set it to the original calller's address, further messages exchanged in that dialog between HLR and gsmSCF will not pass through USSD GW again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Internal message API ====&lt;br /&gt;
&lt;br /&gt;
This section documents the YATE messages used internally by the USSD GW.&lt;br /&gt;
&lt;br /&gt;
===== call.route =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used by ussd_map and ysmpp module to determine a destination where a new USSD session should be sent for further processing.&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module when receiving a request for a new USSD session on MAP for ''ussd_map'' or on SMPP for ''ysmpp''.&lt;br /&gt;
''ussd_map'' will only send this message if default routing is not enabled from configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
* module&lt;br /&gt;
** type: string &lt;br /&gt;
** Name of the module which requested routing&lt;br /&gt;
* application&lt;br /&gt;
** type: string&lt;br /&gt;
** Name of the ussd_map application which sent this routing request&lt;br /&gt;
* route_type&lt;br /&gt;
** type: keyword, value: ussd &lt;br /&gt;
** Specifies routing type, in this case it'll be USSD routing&lt;br /&gt;
* smpp_session_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
* smpp_system_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* if the message was processed, the return value of the message indicates the destination of the subsequent ''ussd.execute'' message.&lt;br /&gt;
* if the message was not processed or it returned with error (signaled by the return value being either &amp;quot;-&amp;quot; or &amp;quot;error&amp;quot;)&lt;br /&gt;
** ''ussd_map'' will do failover&lt;br /&gt;
** ysmpp will close the SMPP session, indicating an error either set by the call.route or either set to the default unknown error indication.&lt;br /&gt;
&lt;br /&gt;
===== ussd.execute =====&lt;br /&gt;
&lt;br /&gt;
This message is used to begin a new USSD session:&lt;br /&gt;
* on SMPP, if the message is directed to the ''ysmpp'' module&lt;br /&gt;
* on MAP if the message is directed to the ''ussd_map'' module&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module after successful routing stage. In case of the ''ussd_map'' module, this is message is sent if the routing stage did not indicate failover necessity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* callto:  &lt;br /&gt;
** type : string&lt;br /&gt;
** It specifies the target module to process the message. The string should start with  'ysmppserver/' for the  ''ysmpp&amp;quot; module and with ''ussd_map/'' for the ''ussd_map'' module.&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier assigned for this USSD session by the entity that processed this message.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error returned if the message was not processed.&lt;br /&gt;
&lt;br /&gt;
Processing of this message will return failure:&lt;br /&gt;
* if the message will not be processed&lt;br /&gt;
* if the 'id' parameter is missing.&lt;br /&gt;
* in case of processing error &lt;br /&gt;
* in case of congestion&lt;br /&gt;
&lt;br /&gt;
===== ussd.update =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used for transmitting USSD messages during a USSD session. This type of message will be used after the initial stage of creating the session through ''ussd.execute'' has succeeded.&lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP CONTINUE message &lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will be refused if it is received after a ''ussd.finalize'' message.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a values not allowed in the context of the USSD session (e.g., sending a ''processUnstructuredSS-Request inside a ''ussd.update'' message)&lt;br /&gt;
&lt;br /&gt;
===== ussd.finalize =====&lt;br /&gt;
&lt;br /&gt;
This message is used to signal the termination of the USSD session. Successful processing of this message means that the USSD session was terminated and is no longer available. &lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP END/ABORT message depending upon the parameters received. A message containing an error that does not map to a MAP error will generate a TCAP ABORT.&lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client, a message that will usually contain a last message indication.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by 'peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a value not allowed in the context of the USSD session&lt;br /&gt;
&lt;br /&gt;
===== Keyword values =====&lt;br /&gt;
&lt;br /&gt;
This section details acceptable values for parameters listed as having type ''keyword''.&lt;br /&gt;
&lt;br /&gt;
* '''hlr.nature/vlr.nature/gsmscf.nature/destination_reference.nature'''&lt;br /&gt;
** unknown&lt;br /&gt;
** international&lt;br /&gt;
** national&lt;br /&gt;
** network-specific&lt;br /&gt;
** subscriber&lt;br /&gt;
** abbreviated&lt;br /&gt;
&lt;br /&gt;
* '''hlr.plan/vlr.plan/gsmscf.plan/destination_reference.plan'''&lt;br /&gt;
** unknown&lt;br /&gt;
** isdn&lt;br /&gt;
** data&lt;br /&gt;
** telex&lt;br /&gt;
** land-mobile&lt;br /&gt;
** national&lt;br /&gt;
** private&lt;br /&gt;
&lt;br /&gt;
* '''operation_type'''&lt;br /&gt;
** pssd: mapping of MAP v1 USSD operation ''processUnstructuredSS-Data'' and of SMPP operation ''PSSD''. &lt;br /&gt;
** pssr: mapping of MAP v2 USSD operation ''processUnstructuredSS-Request'' and of SMPP operation ''PSSR''.&lt;br /&gt;
** ussr: mapping of MAP v2 USSD operation ''unstructuredSS-Request'' and of SMPP operation ''USSR&amp;quot;.&lt;br /&gt;
** ussn: mapping of MAP v2 USSD operation ''unstructuredSS-Notify'' and of SMPP operation ''USSN''.&lt;br /&gt;
&lt;br /&gt;
* '''error'''&lt;br /&gt;
** invalid_logic:  error reported when required processing does not follow USSD rules (e.g., MT request starting with ''processUnstructuredSS-Requests'')&lt;br /&gt;
** system_failure: error mapping for MAP error ''systemFailure''.&lt;br /&gt;
** data_missing: error mapping for  MAP error ''dataMissing''.&lt;br /&gt;
** unexpected_data: error mapping for MAP error ''unexpectedDataValue''.&lt;br /&gt;
** unknown_alphabet: error mapping for MAP error ''unknownAlphabet''.&lt;br /&gt;
** absent_subscriber: error mapping for MAP error ''absentSubscriber''.&lt;br /&gt;
** illegal_subscriber: error mapping for MAP error ''illegalSubscriber''.&lt;br /&gt;
** illegal_equipment: error mapping for MAP error ''illegalEquipment''.&lt;br /&gt;
** ussd_busy: error mapping for MAP error ''ussd-Busy''.&lt;br /&gt;
** call_barred: error mapping for MAP error ''callBarred''.&lt;br /&gt;
** network_failure: error signaling message transmission failure due to  connectivity issues either on the SS7 side or SMPP side.&lt;br /&gt;
** timeout_expired: error signaling a  request timeout occurrence.&lt;br /&gt;
** ussd_sess_end_abnormally: error signaling USSD session termination due to an unknown cause. Mapping for this error implies a TCAP Abort either being generated of received. &lt;br /&gt;
** unknown_error: error specified when there is no available mapping for an errror from SMPP to MAP or vice versa.&lt;br /&gt;
** throttling_error: error signaling that a message failed to be processed due to processing side being in congestion state.&lt;br /&gt;
** protocol_error: SMPP generic error. This error is put whenever there is a SMPP specific error that cannot be mapped into one of the other errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== SMPP custom parameters ====&lt;br /&gt;
&lt;br /&gt;
* 0x1502 =&amp;gt; IMSI;&lt;br /&gt;
* 0x1503 =&amp;gt; VLR Type of Number;&lt;br /&gt;
* 0x1504 =&amp;gt; VLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1505 =&amp;gt; VLR address;&lt;br /&gt;
* 0x1506 =&amp;gt; GSM SCF Type of Number;&lt;br /&gt;
* 0x1507 =&amp;gt; GSM SCF Numbering Plan Indicator;&lt;br /&gt;
* 0x1508 =&amp;gt; GSM_SCF address;&lt;br /&gt;
* 0x1509 =&amp;gt; Destination Reference Type of Number;&lt;br /&gt;
* 0x150a =&amp;gt; Destination Reference Numbering Plan Indicator;&lt;br /&gt;
* 0x150b =&amp;gt; Destination Reference;&lt;br /&gt;
* 0x150c =&amp;gt; MSISDN&lt;br /&gt;
* 0x150d =&amp;gt; Alerting Pattern&lt;br /&gt;
* 0x1800 =&amp;gt; HLR Type of Number;&lt;br /&gt;
* 0x1801 =&amp;gt; HLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1802 =&amp;gt; HLR address.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
==== ysigchan module ====&lt;br /&gt;
&lt;br /&gt;
In order to have MAP connectivity, TCAP instances must be configured in ''ysigchan.conf'': &lt;br /&gt;
&lt;br /&gt;
 ; Example of a SS7 Transaction Capabilities Application Part&lt;br /&gt;
 ; This component is created when encountering a section of this kind&lt;br /&gt;
 ;[ss7tcap]&lt;br /&gt;
 ; type: keyword: identifies the component as a SS7 Transfer Capabilities Application Part&lt;br /&gt;
 ; type = ss7-tcap-ansi for ANSI TCAP&lt;br /&gt;
 ; type = ss7-tcap-itu for ITU TCAP&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; local_SSN: local SubSystem Number. Mandatory&lt;br /&gt;
 ;local_SSN=&lt;br /&gt;
 &lt;br /&gt;
 ; default_remote_SSN: remote SubSystem Number to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_SSN=&lt;br /&gt;
  &lt;br /&gt;
 ; default_remote_pointcode: remote Point Code to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_pointcode=&lt;br /&gt;
 &lt;br /&gt;
 ; pointcodetype: remote Point Code type. See above documentation for available types&lt;br /&gt;
 ;pointcodetype=&lt;br /&gt;
 &lt;br /&gt;
 ; sccp: Name of the SCCP component to create and be used by this TCAP&lt;br /&gt;
 ; A section with the name given here must exist in order to configure the SCCP level&lt;br /&gt;
 ;sccp=&lt;br /&gt;
 &lt;br /&gt;
 ; default_hopcounter: HopCounter provided to SCCP if the application does not provide one&lt;br /&gt;
 ; Values range 1-15, 0 or boolean false disables, boolean true sets to 15&lt;br /&gt;
 ; A non-zero value will force using XUDT or LUDT instead of UDT messages&lt;br /&gt;
 ;default_hopcounter=false&lt;br /&gt;
 &lt;br /&gt;
 ; transact_timeout: Time in seconds to timeout a TCAP transaction after no more activity was registered on it&lt;br /&gt;
 ; NOTE: Values below 15 seconds will be ignored and the timer will assume the default value.&lt;br /&gt;
 ; Defaults to 300 seconds&lt;br /&gt;
 ;transact_timeout=300&lt;br /&gt;
 &lt;br /&gt;
 ; max_timeout_checks: integer: Maximum number of timeout checks done on a transaction without starting the transaction&lt;br /&gt;
 ;  timer before forcefully starting the transaction timer&lt;br /&gt;
 ; Defaults to 10&lt;br /&gt;
 ;max_timeout_checks=10 &lt;br /&gt;
 &lt;br /&gt;
 ; timeout_check: Time interval in milliseconds to check for timeouts.&lt;br /&gt;
 ; Default to 100 ms&lt;br /&gt;
 ;timeout_check=100 &lt;br /&gt;
 &lt;br /&gt;
 ; floodevents: int: How many queued incoming TCAP messages trigger a congestion warning and the drop mechanism&lt;br /&gt;
 ;  for Unidirectional/Begin/QueryWithPermission/QueryWithoutPermission messages.&lt;br /&gt;
 ;  Exit from congestion will take place when there are less the floodevents/4 messages in the queue&lt;br /&gt;
 ; NOTE! Setting this parameter to 0 will disable the congestion warning and protection. Setting it to one will &lt;br /&gt;
 ;  be overriden and floodevents will be set to 2.&lt;br /&gt;
 ;floodevents=1000&lt;br /&gt;
 &lt;br /&gt;
 ;print-messages: Boolean to enable/disable printing of decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ;extended-debug: Boolean to enable/disable printing of the step-by-step decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload. print-messages must be true.&lt;br /&gt;
 ;extended-debug=false&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for keeping the list of current transactions&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
 [tcap-scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=147                                                                                                                                &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                     &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap-hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=7                                                                                                                                  &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Further configuration for SS7 connectivity is required (SCCP, MTP3, etc.).&lt;br /&gt;
&lt;br /&gt;
==== camel_map module ====&lt;br /&gt;
&lt;br /&gt;
Configuring of tracking IDs is done in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ;track_id: string: Shared engine variable name used to obtain a unique tracking ID for TCAP transactions&lt;br /&gt;
 ; If not set, the module will not set a tracking ID for the TCAP transaction&lt;br /&gt;
 ;track_id=&lt;br /&gt;
 &lt;br /&gt;
 ;track_id_base: string: Optional string with which to prefix the tracking ID&lt;br /&gt;
 ; This setting has no effect if track_id is not set&lt;br /&gt;
 ;track_id_base=&lt;br /&gt;
&lt;br /&gt;
In order to allow communication over MAP through SS7, sections configurating application should exist for each role of the ussd_map module (gsmSCF/HLR). A ''camel_map.conf'' section configuring an application looks like this:&lt;br /&gt;
 &lt;br /&gt;
 ;[local appName]&lt;br /&gt;
 ; This section configures a local application which transmits the XML messages as internal Yate messages&lt;br /&gt;
 &lt;br /&gt;
 ; translator: string: name of translator to be used by this application.&lt;br /&gt;
 ; Must be one one the [tcap ...] sections configured in the camel_map.conf file.&lt;br /&gt;
 ;translator=&lt;br /&gt;
  &lt;br /&gt;
 ; capabilities: string: List of capabilities separated by commas which this application supports&lt;br /&gt;
 ;capabilities=&lt;br /&gt;
  &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into a Yate message&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - string: pass the XML as a string&lt;br /&gt;
 ;  - object: pass the XML as an object&lt;br /&gt;
 ;  - both: pass the XML as a string and object&lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; enable: bool: Enable this application&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
&lt;br /&gt;
The translator setting refers to a section of the type defined below which configures atachement to a TCAP instance&lt;br /&gt;
&lt;br /&gt;
 ;[tcap map]&lt;br /&gt;
 ; This section configures a TCAP User MAP/CAMEL protocol translator&lt;br /&gt;
 &lt;br /&gt;
 ; enable: bool: Enable this translator&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of TCAP User &lt;br /&gt;
 ; Allowed values are MAP or CAMEL&lt;br /&gt;
 ;type=MAP&lt;br /&gt;
 &lt;br /&gt;
 ; host: IP address: Address on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ;host=127.0.0.1 &lt;br /&gt;
 &lt;br /&gt;
 ; port: integer: Port on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ; Note: setting port to 0 will disable the listener, so it will not accept TCP applications&lt;br /&gt;
 ;port=5555&lt;br /&gt;
 &lt;br /&gt;
 ; tcap: string: Name of TCAP to which this TCAP user should attach itself to for the SS7 communication&lt;br /&gt;
 ;tcap=&lt;br /&gt;
 &lt;br /&gt;
 ; add-encoding: bool: Always add encoding attribute to XML elements for decoded parameters&lt;br /&gt;
 ;add-encoding=default from [general]&lt;br /&gt;
 &lt;br /&gt;
 ; add-timestamp: bool: Add to XML timestamps used for estimating application latency&lt;br /&gt;
 ;add-timestamp=default from [general] &lt;br /&gt;
 &lt;br /&gt;
 ; print-messages: bool: Debug option to print TCAP and XML messages. This option is applicable on reload.&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-string: string: Specifies what the ussd-String parameter will contain as data&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - octets: ussd-String will contain the octets as they were received&lt;br /&gt;
 ;  - text: ussd-String will contain the GSM7Bit decoded text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-string=text&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-decode: string: Specifies what ussd-String parameters should be decoded into text&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - none: ussd-String parameters will never be decoded into text&lt;br /&gt;
 ;  - first: ussd-String in a TCAP Begin message will be decoded into text&lt;br /&gt;
 ;  - all: all ussd-String parameters will be decoded into text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-decode=all&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for mapping of TCAP transactions to applications&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For load sharing (especially in cases of high loads), you can configure multiple applications using the same translator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 applications acting as a gsmSCF, each one attached to the TCAP instance with gsmSCF SSN, and 2 applications as HLR, each one attached to the TCAP instance with HLR SSN 6:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 track_id=ussdgw&lt;br /&gt;
 track_id_base=ussdgw/&lt;br /&gt;
 &lt;br /&gt;
 [tcap scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-scf                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false                                                                                                                           &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-hlr                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false   &lt;br /&gt;
 &lt;br /&gt;
 [local ussdSCF1]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=first                                                                                                                            &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [local ussdSCF2]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=first               &lt;br /&gt;
 &lt;br /&gt;
 [local ussdHLR1]&lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=first                                                                                                                            &lt;br /&gt;
 &lt;br /&gt;
 [local ussdHLR2]                                                                                                                             &lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=first&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
The module is configured through ''ussd_map.conf''. The configuration file sets timeout parameters and processing threads parameters in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList for keeping dialogs&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
 &lt;br /&gt;
 ; component_ttl: integer: Component time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; Defaults to 600000 (10 minutes)&lt;br /&gt;
 ;component_ttl=600000&lt;br /&gt;
 &lt;br /&gt;
 ; dialog_idle_ttl: integer: Dialog idle (nothing sent/received) time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; It can be set to 0 to keep it alive until the remote party terminates the dialog&lt;br /&gt;
 ; Defaults to 86400000 (1 day)&lt;br /&gt;
 ;dialog_idle_ttl=86400000&lt;br /&gt;
&lt;br /&gt;
 ; dialog_ended_ttl: integer: Ended dialog time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000.&lt;br /&gt;
 ; It can be set to 0 to remove the dialog after termination&lt;br /&gt;
 ; Defaults to 0&lt;br /&gt;
 ;dialog_ended_ttl=0&lt;br /&gt;
 &lt;br /&gt;
 ; dispatcher_maxthreads: integer: Maximum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ; NOTE: if the value is set to 0, the module will enqueue the messages into YATE's engine.&lt;br /&gt;
 ;dispatcher_maxthreads=0&lt;br /&gt;
&lt;br /&gt;
 ; dispatcher_minthreads: integer: Minimum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ;dispatcher_minthreads=1&lt;br /&gt;
&lt;br /&gt;
 ;dispatcher_priority: string: Default priority of message dispatch threads&lt;br /&gt;
 ;dispatcher_priority=normal&lt;br /&gt;
&lt;br /&gt;
 ; floodevents: integer: Threshold for signaling congestion when the number of messages waiting to be dispatched exceeds it.&lt;br /&gt;
 ; When entering congestion, all new MAP dialogs and USSD sessions will be refused.&lt;br /&gt;
 ; 0 disables the mechanism&lt;br /&gt;
 ;floodevents=0&lt;br /&gt;
&lt;br /&gt;
 ; congestion_exit_factor: double: Factor used to calculate the exit congestion threshold&lt;br /&gt;
 ; NOTE: if the factor results in a exit congestion threshold of 0 or greater than floodevents, &lt;br /&gt;
 ; the setting will be overriden and the exit congestion threshold will be set to 1.&lt;br /&gt;
 ;congestion_exit_factor=0.5&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Timeout settings should be correlated with timeout settings in TCAP and SMPP, each having its own timeout mechanism.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gateway applications which do the MAP &amp;lt;-&amp;gt; USSD translation are configured through section like the one below:&lt;br /&gt;
&lt;br /&gt;
 [appName]&lt;br /&gt;
 ; section name is the name of the camel_map application, it must correspond to a [local appName] section in camel_map &lt;br /&gt;
&lt;br /&gt;
 ; enable: boolean: Enable this application&lt;br /&gt;
 ; Defaults to yes&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of MAP &amp;lt;-&amp;gt; USSD translator: &lt;br /&gt;
 ;  - SCF means that is the part that receives new dialogs from the HLR (user initiated USSD)&lt;br /&gt;
 ;  - HLR is the part that receives new dialogs from gsmSCF (network initiated USSD)&lt;br /&gt;
 ; This setting cannot be changed on reload.&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into &lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; print_msg: boolean: Print sent/received messages to output&lt;br /&gt;
 ;print_msg=no&lt;br /&gt;
  &lt;br /&gt;
 ; print_xml: boolean: Print sent/received XML data to output&lt;br /&gt;
 ;print_xml=no&lt;br /&gt;
 &lt;br /&gt;
 ; local_addr. : prefix: Parameters prefixed with this set the local SCCP address of this application &lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; local_addr.CallingPartyAddress.route=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.ssn=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.pointcode=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.nature=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.plan=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.translation=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.encoding= &lt;br /&gt;
 &lt;br /&gt;
 ; default_routing: bool : Do routing to default address for all messages&lt;br /&gt;
 ; default_routing=no&lt;br /&gt;
 &lt;br /&gt;
 ; default_addr. : prefix: parameters prefixed with this will be used as the default SCCP called address&lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; default_addr.application=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.route=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.ssn=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.pointcode=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.nature=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.translation=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.encoding=&lt;br /&gt;
 &lt;br /&gt;
 ; hlr_ssn: integer: The SSN expected in the calling address from a HLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;hlr_ssn=6&lt;br /&gt;
 &lt;br /&gt;
 ; vlr_ssn: integer: The SSN expected in the calling address from a VLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;vlr_ssn=7&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each section should have its own equivalent in ''camel_map.conf''.&lt;br /&gt;
In the USSD GW scenario, at least tho applications are needed, one acting as SCF, one as HLR. For load sharing multiple gsmSCF and HLR applications can be configured (see the configuration example below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 gsmSCF applications and 2 HLR applications, each one corresponding with a application section in the ''camel_map.conf'' example:&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 component_ttl=600000                                                                                                                         &lt;br /&gt;
 dialog_ended_ttl=0                                                                                                                           &lt;br /&gt;
 dispatcher_maxthreads=10                                                                                                                     &lt;br /&gt;
 dispatcher_minthreads=5                                                                                                                      &lt;br /&gt;
 ;dispatcher_priority=normal                                                                                                                  &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [ussdSCF1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
&lt;br /&gt;
 [ussdSCF2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
 &lt;br /&gt;
 [ussdHLR1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                         &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd                                                                                              &lt;br /&gt;
                                                   &lt;br /&gt;
 [ussdHLR2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
TODO - configuration explanations&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example''''&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
 server=smpp-server                                                                                                                           &lt;br /&gt;
 track_id=ussdgw                                                                                                                              &lt;br /&gt;
 track_id_base=ussdgw/                                                                                                                        &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [smpp-server]                                                                                                                                &lt;br /&gt;
 enable=true                                                                                                                                  &lt;br /&gt;
 session_responseinterval=600000                                                                                                              &lt;br /&gt;
 sessionset_process_max=1                                                                                                                     &lt;br /&gt;
 codec_warndefaults=false                                                                                                                     &lt;br /&gt;
 print-messages=no                                                                                                                            &lt;br /&gt;
                                                                                                                                            &lt;br /&gt;
 [listenerserver server]                                                                                                                      &lt;br /&gt;
 ;enable=yes                                                                                                                                  &lt;br /&gt;
 addr=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=12345    &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Monitoring ===&lt;br /&gt;
&lt;br /&gt;
This section details comands through which the state of the USSD GW can be monitored.&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
* '''Congestion state monitoring'''&lt;br /&gt;
&lt;br /&gt;
The ''ussd_map'' module will generate an alarm when entering/exiting a congestion state. If SNMP support is enabled, this will generate a trap on SNMP.&lt;br /&gt;
The congestion status is also reported in the ''state'' entry in the result of the module status command.&lt;br /&gt;
&lt;br /&gt;
* '''Module status'''&lt;br /&gt;
&lt;br /&gt;
The module reports its status through the following command in the YATE telnet console:&lt;br /&gt;
&lt;br /&gt;
 status ussd_map&lt;br /&gt;
&lt;br /&gt;
The command will print the following information:&lt;br /&gt;
&lt;br /&gt;
 workers=count_of_dispatching_threads,messages=count_msg,dialogs=count_of_dialogs,state=normal,count=count_of_applications;format=Type | CurrentDlgs| MAPCreated | UssdCreated |DefaultRouted | MAPSent | MapRecv | USSDSent | USSDRecv | MAPAbort | USSDAbort | BuiltAbort | MAPTimeouts | USSDTimeouts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
* workers: current number of used dispatching threads from the maximum configured pool (e.g., 3/10 means 3 threads are used of a pool of 10)&lt;br /&gt;
* messages: count of messages waiting on the dispatching queue of the engine&lt;br /&gt;
* dialogs: total number of USSD sessions currently handled by all applications&lt;br /&gt;
* state of the engine: normal/congestion&lt;br /&gt;
* count: number of applications acting either as gsmSCF, either as HLR&lt;br /&gt;
* format: name of the application for which the following data is reported:&lt;br /&gt;
** Type: role of the application: SCF (communicates with real HLR), HLR (communicates with real gsmSCF)&lt;br /&gt;
** CurrentDlgs: number of current MAP dialogs handled by this application&lt;br /&gt;
** MAPCreated: number of sessions (dialogs) started by the MAP side&lt;br /&gt;
** UssdCreated: number of sessions (dialogs) started by the SMPP side&lt;br /&gt;
** DefaultRouted: number of dialogs for which failover took place&lt;br /&gt;
** MAPSent: number of MAP messages sent to gsmSCF/HLR. It doesn't count the ones sent via failover routing.&lt;br /&gt;
** MAPRecv: number of MAP messages received from gsmSCF/HLR&lt;br /&gt;
** USSDSent: number of sent ussd.execute/ussd.update/ussd.finalize messages towards the SMPP side.&lt;br /&gt;
** USSDRecv: number of received ussd.execute/ussd.update/usdd.notify messages from SMPP side.&lt;br /&gt;
** MAPAbort: number of dialog aborts generated by MAP side&lt;br /&gt;
** USSDAbort: number of dialog aborts generated by USSD side&lt;br /&gt;
** BuiltAbort: number of dialog aborts generated by the ussd_map module (e.g., not having a ussd.update message processed by anyone will cause ussd_map to generate session abort)&lt;br /&gt;
** MAPTimeouts: number of dialog timeouts generated by MAP side&lt;br /&gt;
** USSDTimeouts: number of timeouts reported by USSD side&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Module control commands'''&lt;br /&gt;
&lt;br /&gt;
The module offers the following control commands through the telnet console:&lt;br /&gt;
* ''control ussd_map appName print-msg [yes|no|verbose]'' : enable printing of received/sent map./ussd./messages.&lt;br /&gt;
* ''control ussd_map appName print-xml [yes|no|verbose]'' : enable printing of received/sent XMLs.&lt;br /&gt;
* ''control ussd_map appName export-xml-as [string|object|both]'' : change the way XML is set in the internal messages&lt;br /&gt;
* ''control ussd_map start_stats'' : begin gathering data for statistics&lt;br /&gt;
* ''control ussd_map stop_stats'' : stop gathering data for statistics&lt;br /&gt;
* ''control usdd_map stats'' : print statistic data per engine and each application in part. Data contains number of MAP messages handled per second, number of USSD messages handled per second, maximum number of current dialogs, number of timeouts and number of aborts.&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
The ysmpp module provides the following options for status command:&lt;br /&gt;
&lt;br /&gt;
'NOTE' the module_name can take the following values: smppserver or smppclient.&lt;br /&gt;
&lt;br /&gt;
* status module_name listeners&lt;br /&gt;
Prints the module listeners status in format: Address|Status|Reason.&lt;br /&gt;
&lt;br /&gt;
* status module_name sessions&lt;br /&gt;
Prints the status of the sessions in format: Id|State|BindMode|SystemId|IpAddress:Port|Congested|Incoming Queue|Outgoing Queue;&lt;br /&gt;
&lt;br /&gt;
** Id: The ID of the SMPP session. Can be used for routing.&lt;br /&gt;
** State: The state of the SMPP session.&lt;br /&gt;
** BindMode: The mode in which the session was bound. (Send/Recv/SendRecv)&lt;br /&gt;
** SystemId: The id with which the session has been authenticated. Can be used in routing.&lt;br /&gt;
** IpAddress:Port: The Ip Address and port of the remote end of the session.&lt;br /&gt;
** Congested: True if this session is in congestion state.&lt;br /&gt;
** Incoming Queue: The number of messages not processed in the incoming queue.&lt;br /&gt;
** Outgoing Queue: The number of messages not processed in the outgoing queue.&lt;br /&gt;
&lt;br /&gt;
*status module_name ussd overview&lt;br /&gt;
Prints the stats of the USSD sessions in format: Total|Active|Average Duration|Total Sent|Total Received|AverageTrafficPerSecond|EndedWithErrors|CongestionRefused&lt;br /&gt;
&lt;br /&gt;
** Total: the number of USSD sessions created since the starting of the program.&lt;br /&gt;
** Active: the number of USSD sessions currently active.&lt;br /&gt;
** Average Duration: average duration of a ussd session.&lt;br /&gt;
** Total Sent: total number of SMPP messages sent for USSD sessions.&lt;br /&gt;
** Total Received: total number of SMPP messages received for USSD sessions.&lt;br /&gt;
** AverageTrafficPerSecond: average traffic per second for USSD sessions.&lt;br /&gt;
** EndedWithErrors: the number of USSD sessions that ended with error.&lt;br /&gt;
** CongestionRefused: the number of USSD sessions refused because the server was overloaded.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* Mobile Application Part (MAP) specification: ETSI TE 129 002&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	<entry>
		<id>https://ss7api.null.ro/index.php/USSD_GW</id>
		<title>USSD GW</title>
		<link rel="alternate" type="text/html" href="https://ss7api.null.ro/index.php/USSD_GW"/>
				<updated>2014-02-06T15:47:56Z</updated>
		
		<summary type="html">&lt;p&gt;Oana: /* ussd.finalize */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an implementation an USSD gateway acting as a MAP Service Control Function (gsmSCF) and as a HLR at the same time. When communicating with a HLR or VLR, the YATE USSD GW acts as a gsmSCF. When communicating with a gsmSCF, the YATE USSDGW acts as a HLR.&lt;br /&gt;
The functionality of the USSD GW allows:&lt;br /&gt;
* redirecting of USSD requests arriving either from user side or gsmSCF side to a SMPP client where they can be altered.&lt;br /&gt;
* acting as a proxy for requests that need not be handled by SMPP clients or when the SMPP handling fails&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MAP USSD description ==&lt;br /&gt;
&lt;br /&gt;
In versions 2 and 3 of the GSM MAP protocol there are 3 operations used for USSD operations:&lt;br /&gt;
* processUnstructedSS-Request&lt;br /&gt;
* unstructuredSS-Request&lt;br /&gt;
* unstrusturedSS-Notify&lt;br /&gt;
&lt;br /&gt;
The are 2 scenarios for USSD operations:&lt;br /&gt;
* mobile initiated USSD requests&lt;br /&gt;
* network initiated USSD requests&lt;br /&gt;
&lt;br /&gt;
A TCAP dialog used by USSD is always terminated by the network side.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mobile initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mobile initiated USSD requests are USSD requests started by the mobile subscriber.  &lt;br /&gt;
&lt;br /&gt;
A USSD request is started when receiving a TCAP BEGIN message containing the ''processUnstructedSS-Request'' Invoke operation. The request can be handled by the VLR, HLR or a gsmSCF. If the VLR does not handle the request, it will transmit it to the HLR. The HLR can either handle it itself or it can transmit it to a gsmSCF for handling.&lt;br /&gt;
&lt;br /&gt;
At this point, the network can either send a response to the request immediately or request additional information. In the first case, the handler of the request will send a TCAP End with ''processUnstructuredSS-Request'' ResultLast containing the result for the request. &lt;br /&gt;
In the latter case, the network will send a TCAP CONTINUE with ''unstructuredSS-Request'' Invoke operation. The response of the mobile subscriber to this request will be passed to the network in a TCAP CONTINUE with ''unstructuredSS-Request'' ResultLast component. At this point, if the network decides that it has enough information for providing the response to the user, it will send a TCAP END with ''processUnstructuredSS-Request'' ResultLast. Otherwise, it can request further information through another ''unstructuredSS-Request'' Invoke operation.&lt;br /&gt;
&lt;br /&gt;
=== Network initiated USSD requests ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD requests are USSD requests started by the network towards a certain subscriber.&lt;br /&gt;
&lt;br /&gt;
Requests made by the network can be of one of two types:&lt;br /&gt;
* user interaction requests&lt;br /&gt;
* network notification requests.&lt;br /&gt;
&lt;br /&gt;
User interaction requests are USSD requests that the network makes in which it requires some type of information back from the mobile subscriber. These are started by the network through a TCAP BEGIN containing an ''unstructuredSS-Request'' Invoke. The answer from the mobile subscriber will be received in a TCAP CONTINUE containing an ''unstructuredSS-Request'' ResultLast. If the network still wants to request further information, it will repeat the process. Otherwise, it will send a TCAP END to close the TCAP dialog.&lt;br /&gt;
&lt;br /&gt;
Network notification requests are USSD requests in which the network only sends a notification to the user. This is achieved by sending a TCAP BEGIN message containing a ''unstructuredSS-Notify'' Invoke. The mobile subscriber side will only respond with a TCAP CONTINUE containing an empty ''unstructuredSS-Notify'' in order to signal that the notification was received. The network will close the TCAP dialog through TCAP END.&lt;br /&gt;
&lt;br /&gt;
=== MAP USSD parameters ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following list describe common parameters used across all MAP USSD operations:&lt;br /&gt;
* ''destinationReference'': this parameter will contain either an MSISDN or an IMSI. In the case of mobile originated USSD request, this will identify the user which made the request. In the case of network initiated requests, it will identify the mobile user to be contacted for this request.&lt;br /&gt;
* ''ussd-String'': for ''processUnstructuredSS-Request'' Invoke it contains the dialed USSD code, for the result it would probably contain a message from the network detailing the result of the request. For ''unstructuredSS-Request'' Invoke it will contain a message asking for the user to choose some option and for the result it will contain the option chosen by the user. In the case of ''unstructuredSS-Notify'', this parameter will only be present in the Invoke.&lt;br /&gt;
* ''ussd-DataCodingScheme'': this is a parameter which specifies in which way the ''ussd-String'' parameter is encoded and it is present whenever ''ussd-String'' is present. E.g., this parameter would indicate if the ''ussd-String'' is encoded using GSM7bit encoding or UCS2.&lt;br /&gt;
&lt;br /&gt;
== SMPP USSD description ==&lt;br /&gt;
&lt;br /&gt;
'''TO DO'''&lt;br /&gt;
&lt;br /&gt;
== System description ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== System design ===&lt;br /&gt;
&lt;br /&gt;
In order to provide the specified functionality, the system makes use of the following YATE components:&lt;br /&gt;
* the SS7 stack  present in YATE &lt;br /&gt;
* the camel_map module which decodes/encodes MAP messages coming from the SS7 network to/from internal YATE messages containing MAP operations in XML form. Together with the SS7 layer this provides MAP connectivity with HLR/gsmSCF.&lt;br /&gt;
* the ussd_map module which takes internal MAP messsages decoded by the camel_map moduled and translates them to internal USSD messages. This module acts as gsmSCF towards a HLR and as a HLR towards a gsmSCF.&lt;br /&gt;
* the SMPP stack present in YATE (ysmpp module) which is able to catch internal USSD messages and transmit them over SMPP. It also translates SMPP messages into internal USSD messages.&lt;br /&gt;
* requests for new USSD sessions will go through routing to decide who should handle the request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following sections detail the behaviour of the system in the different USSD scenarios.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Mobile originated USSD handling ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A user initiated USSD session is handled according to the following schema:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# HLR sends a ''processUnstructuredSS-Request (Invoke)'' for code *100#. camel_map decodes the ''ussd-String'' into ''ussd-Text=*100#''.&lt;br /&gt;
# the ussd_map module (gsmSCF side) processes the request received from the HLR and emits a ''call.route'' message with ''called=*100#''.&lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with the ''callto'' parameter set to the value returned from routing. ussd_map dispatches the ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will send  it to the target specified in ''callto'' parameter after the module prefix ''ysmppserver/''.&lt;br /&gt;
# The ysmpp module receives and process the received ''submit_sm'' message.&lt;br /&gt;
# The ysmpp module will send a ''call.route'' message with the ''called=*100#''.&lt;br /&gt;
# The ysmpp module emits a ''ussd.execute'' message with ''callto=retvalue from call.route'' message.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ussd.execute message and if it is the target of the message, meaning that ''callto'' starts with ''ussd_map/''. From that message it will build a map.message that it will send to the gsmSCF as a ''processUnstructuresSS-Request (Invoke)'' MAP message.&amp;lt;br&amp;gt;'''NOTE:''' From here on, the gsmSCF could handle the request in one of  two distinguished cases: one where the gsmSCF requires interaction with the mobile subscriber and one where the gsmSCF just needs to respond to the user request. The following steps detail the former case.&amp;lt;br&amp;gt;&lt;br /&gt;
# gsmSCF sends an ''unstructuredSS-Request (Invoke)'' to  request further information.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits an ''ussd.update'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.update'' message and confirms to the SMPP client that the message sent in step 5 was processed.&lt;br /&gt;
# The SMPP client should confirm the processing of the SMPP message sent in step 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver_sm'' message to the SMPP client with the menu received in ''ussd.update'' message.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message with the received menu.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message from SMPP client and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.update'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time in which the mobile subscribers responds can be quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway when receiving the response from the mobile subscriber.&lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 13.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 21.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 9 and 24 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''processUnstructuredSS-Request (ResultLast)''  for the initial user request.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''processUnstructuredSS-Request (ResultLast)'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 22 or 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 21 or 4.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 31.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 29.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''processUnstructuredSS-Request (ResultLast)''.&lt;br /&gt;
&lt;br /&gt;
==== Network initiated USSD Request ====&lt;br /&gt;
&lt;br /&gt;
A network initiated USSD session is handled as described in the following figure:&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_ussd.png]]&lt;br /&gt;
&lt;br /&gt;
# gsmSCF sends''unstructuredSS-Request (Invoke)'' to USSD Gateway (HLR part) to present a menu for MSISDN 0015559191.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''unstructuredSS-Request (Invoke)'' message and emits a ''call.route'' message with called=0015559191. &lt;br /&gt;
# After ussd_map module successfully dispatched the call.route message, it generates a ''ussd.execute'' message with ''callto'' set to the route returned in the return value of the ''call.route'' message and dispatches an ''ussd.execute'' message.&lt;br /&gt;
# The ysmpp module catches the ''ussd.execute'' message and if the ''callto'' param value starts with ''ysmppserver/'' and with it it builds a ''deliver_sm'' message that it will then send to the target specified in the ''callto'&amp;quot; parameter after the ''ysmppserver'' module prefix.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message towards SMPP server.&lt;br /&gt;
# The SMPP server processes the received ''submit_sm'' message and dispatches a ''call.route'' message.&lt;br /&gt;
# After successfully dispatching of ''call.route'' message the SMPP server will dispatch a ''call.execute'' message.&lt;br /&gt;
# The ussd_map module (SCF part) process the ''ussd.execute'' message and sends an ''unstructuredSS-Request (Invoke)'' towards the HLR.&amp;lt;br&amp;gt;The time to receiving a response from the user after gsmSCF has requested user interaction could be possibly quite long.&amp;lt;br&amp;gt;&lt;br /&gt;
# The HLR sends  ''unstructuredSS-Request (ResultLast)'' to USSD gateway &lt;br /&gt;
# The ussd_map module (SCF part) processes the message and emits a ''ussd.update'' message.&lt;br /&gt;
# ysmpp module processes the ''ussd.update'' message and sends ''submit_sm rsp'' to SMPP client to confirm the reception of the message sent on step 5.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 4.&lt;br /&gt;
# The ysmpp module will send a deliver_sm message to SMPP clients which will contain user's response.&lt;br /&gt;
# The SMPP client should send a ''submit_sm'' message to SMPP server which will contain the message received on step 13.&lt;br /&gt;
# The ysmpp module receives the ''submit_sm'' message and emits a ''ussd.update'' message.&lt;br /&gt;
# The ussd_map module (HLR part) receives the ''ussd.update'' message and sends the ''unstructuredSS-Request (ResultLast)'' to gsmSCF.&amp;lt;br&amp;gt;'''NOTE:''' Steps between 1 and 16 can be repeated.&amp;lt;br&amp;gt;&lt;br /&gt;
# The gsmSCF sends ''TCAP END'' in order to finish the USSD session.&lt;br /&gt;
# The ussd_map module (HLR part) processes the ''TCAP END'' and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ysmpp module receives the ''ussd.finalize'' message and sends a ''submit_sm rsp'' for the message received on point 14.&lt;br /&gt;
# The SMPP client should send a ''deliver_sm rsp'' for the message received on point 13.&lt;br /&gt;
# The ysmpp module sends a ''deliver sm + last message indication'' to SMPP client.&lt;br /&gt;
# The SMPP client should send a ''submit sm + last message indication'' to SMPP server.&lt;br /&gt;
# ysmpp module sends ''submit_sm rsp'' to confirm the message received on step 22.&lt;br /&gt;
# SMPP client should send a ''deliver_sm rsp'' to confirm the message received on step 21.&lt;br /&gt;
# ysmpp module receives ''submit_sm'' message and sends a ''ussd.finalize'' message.&lt;br /&gt;
# The ussd_map module (SCF part) processes the ''ussd.finalize'' message and sends ''END''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Fallback/Proxy mode ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following images detail scenarios where the USSD GW is instructed to do failover.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:user_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when an HLR sends ''processUnstructuredSS-Request (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:''' &lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message. &lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Network initiated USSD session fallback.&lt;br /&gt;
&lt;br /&gt;
[[File:network_initiated_failover.png]]&lt;br /&gt;
&lt;br /&gt;
The picture above details a failover scenario for when a gsmSCF sends a &amp;quot;unstructuredSS-Request/unstructuredSS-Notify (Invoke)'' (1).&lt;br /&gt;
&lt;br /&gt;
'''NOTES:'''&lt;br /&gt;
* The read circles in the above picture represent points in handling where a fallback decision can be made.&lt;br /&gt;
* A fallback decision can be made only if in all previous fallback decision points the necessity for failover was determined to be false.&lt;br /&gt;
* '''U1''' and '''U2''' represent SMPP message responses.&lt;br /&gt;
&lt;br /&gt;
Decision points where ''ussd_map'' will determine the need for failover:&lt;br /&gt;
*'''E1''': Routing procedure does not return a valid route (''call.route''  returns with false or an error) or routing decision indicates a failover route (routing return a route starting with prefix ''ussd_map/'')&lt;br /&gt;
*'''E2''': ''ussd.execute'' message fails to be processed (in this case by the ysmpp module)&lt;br /&gt;
*'''E3''': SMPP server received an SMPP error for ''deliver_sm'' message.&lt;br /&gt;
*'''E4''': SMPP client received an SMPP error for ''submit_sm'' message.&lt;br /&gt;
*'''E5''': The ''call.route'' message  emitted by ''ysmpp'' does not return a valid route (''call.route''  returns with false or an error).&lt;br /&gt;
*'''E6''': ''ussd.execute'' message fails to be processed (in this case by the ussd_map module).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The SMPP USSD gateway will also be bypassed when the ''ussd_map'' module is configured to do failover for all requests.&lt;br /&gt;
&lt;br /&gt;
Any type of SMPP error received either in the result for the ''ussd.execute'' or in the first message back from SMPP that does not have a mapping on MAP will lead to the ''ussd_map'' module doing failover. Errors that would generate a failover are errors like timeout, session ended abnormally, unknown errors, congestion errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once ''ussd_map'' decides that failover should be done, it will use the original received message  from the HLR (MO case)/gsmSCF (MT case) and it will only alter the called address to be the one of the gsmSCF/HLR set for the failover.. The calling address will remain the one received from HLR/gsmSCF, the idea being that for the first message we want to pretend that we are the original gsmSCF/HLR. When the receiving end of this message will want to respond, it will use the calling address from the message. Seeing that the ''ussd_map'' module set it to the original calller's address, further messages exchanged in that dialog between HLR and gsmSCF will not pass through USSD GW again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Internal message API ====&lt;br /&gt;
&lt;br /&gt;
This section documents the YATE messages used internally by the USSD GW.&lt;br /&gt;
&lt;br /&gt;
===== call.route =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used by ussd_map and ysmpp module to determine a destination where a new USSD session should be sent for further processing.&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module when receiving a request for a new USSD session on MAP for ''ussd_map'' or on SMPP for ''ysmpp''.&lt;br /&gt;
''ussd_map'' will only send this message if default routing is not enabled from configuration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
* module&lt;br /&gt;
** type: string &lt;br /&gt;
** Name of the module which requested routing&lt;br /&gt;
* application&lt;br /&gt;
** type: string&lt;br /&gt;
** Name of the ussd_map application which sent this routing request&lt;br /&gt;
* route_type&lt;br /&gt;
** type: keyword, value: ussd &lt;br /&gt;
** Specifies routing type, in this case it'll be USSD routing&lt;br /&gt;
* smpp_session_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
* smpp_system_id&lt;br /&gt;
** type: string&lt;br /&gt;
** TODO&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* if the message was processed, the return value of the message indicates the destination of the subsequent ''ussd.execute'' message.&lt;br /&gt;
* if the message was not processed or it returned with error (signaled by the return value being either &amp;quot;-&amp;quot; or &amp;quot;error&amp;quot;)&lt;br /&gt;
** ''ussd_map'' will do failover&lt;br /&gt;
** ysmpp will close the SMPP session, indicating an error either set by the call.route or either set to the default unknown error indication.&lt;br /&gt;
&lt;br /&gt;
===== ussd.execute =====&lt;br /&gt;
&lt;br /&gt;
This message is used to begin a new USSD session:&lt;br /&gt;
* on SMPP, if the message is directed to the ''ysmpp'' module&lt;br /&gt;
* on MAP if the message is directed to the ''ussd_map'' module&lt;br /&gt;
&lt;br /&gt;
This message is sent by either ''ussd_map'' module or ''ysmpp'' module after successful routing stage. In case of the ''ussd_map'' module, this is message is sent if the routing stage did not indicate failover necessity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* callto:  &lt;br /&gt;
** type : string&lt;br /&gt;
** It specifies the target module to process the message. The string should start with  'ysmppserver/' for the  ''ysmpp&amp;quot; module and with ''ussd_map/'' for the ''ussd_map'' module.&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier for the USSD session used by the dispatcher of the message.&lt;br /&gt;
* called:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the value on which destination is determined. For a MO USSD session, this parameter will contain the decoded USSD string (USSD request code). For a MT USSD sessions, this parameter will contain the destination MSISDN.&lt;br /&gt;
* callednumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the called parameter. It is used only when called is a MSISDN&lt;br /&gt;
* callednumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the called parameter.  It is used only when called is a MSISDN.&lt;br /&gt;
* caller:&lt;br /&gt;
** type: string:&lt;br /&gt;
** Identifies the caller in this USSD session. For MO USSD it can be the MSISDN (if present) . ''ussd_map'' will set the the calling party address GT in this parameter for MT case or if MSISDN is not specified for MO case.&lt;br /&gt;
* callernumtype:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies type (NAI) of the caller parameter.&lt;br /&gt;
* callernumplan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Numbering plan for the number specified by the caller parameter.&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of USSD operation that fired this message.&lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
** '''NOTE''': If YATE uses in the internal messages the decoded text, this parameter should not be set (it has higher priority in ussd_map).&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme.&lt;br /&gt;
* imsi:&lt;br /&gt;
** type: string&lt;br /&gt;
** IMSI value if available.&lt;br /&gt;
* hlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the HLR GTT if that information was available.&lt;br /&gt;
* hlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT nature  (NAI)&lt;br /&gt;
* hlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies HLR GTT numbering plan&lt;br /&gt;
* vlr:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the VLR GTT if that information was available.&lt;br /&gt;
* vlr.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT nature  (NAI)&lt;br /&gt;
* vlr.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies VLR GTT numbering plan&lt;br /&gt;
* gsmscf:&lt;br /&gt;
** type: string&lt;br /&gt;
** It specifies the gsmSCF GTT if that information was available.&lt;br /&gt;
* gsmscf.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT nature  (NAI)&lt;br /&gt;
* gsmscf.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies gsmSCF GTT numbering plan&lt;br /&gt;
* destination_reference:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN or IMSI specified in the DestinationReference TCAP MAP parameter.&lt;br /&gt;
* destination_reference.nature:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference nature  (NAI)&lt;br /&gt;
* destination_reference.plan:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** It specifies DestinationReference numbering plan&lt;br /&gt;
* msisdn:&lt;br /&gt;
** type: string&lt;br /&gt;
** MSISDN &lt;br /&gt;
* alert_pattern:&lt;br /&gt;
** type: string&lt;br /&gt;
** Alert Pattern parameter as received in the USSD MAP message.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* The  hlr/vlr address represents:&lt;br /&gt;
** the address from which the message was received (if it can be determined) for MO USSD session.&lt;br /&gt;
** the address where the message should be sent for MT USSD session.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** Identifier assigned for this USSD session by the entity that processed this message.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error returned if the message was not processed.&lt;br /&gt;
&lt;br /&gt;
Processing of this message will return failure:&lt;br /&gt;
* if the message will not be processed&lt;br /&gt;
* if the 'id' parameter is missing.&lt;br /&gt;
* in case of processing error &lt;br /&gt;
* in case of congestion&lt;br /&gt;
&lt;br /&gt;
===== ussd.update =====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This message is used for transmitting USSD messages during a USSD session. This type of message will be used after the initial stage of creating the session through ''ussd.execute'' has succeeded.&lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP CONTINUE message &lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will be refused if it is received after a ''ussd.finalize'' message.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a values not allowed in the context of the USSD session (e.g., sending a ''processUnstructuredSS-Request inside a ''ussd.update'' message)&lt;br /&gt;
&lt;br /&gt;
===== ussd.finalize =====&lt;br /&gt;
&lt;br /&gt;
This message is used to signal the termination of the USSD session. Successful processing of this message means that the USSD session was terminated and is no longer available. &lt;br /&gt;
&lt;br /&gt;
When receiving this message:&lt;br /&gt;
* the ''ussd_map'' module will generate a TCAP END/ABORT message depending upon the parameters received. A message containing an error that does not map to a MAP error will generate a TCAP ABORT.&lt;br /&gt;
* the ''ysmpp'' module will generate a SMPP ''deliver_sm'' if it acts as a server (as in the case of the USSD GW) or ''submit_sm'' if it acts as a SMPP client, a message that will usually contain a last message indication.&lt;br /&gt;
&lt;br /&gt;
Parameters:&lt;br /&gt;
* id:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier of the sending side of the message&lt;br /&gt;
* peerid:&lt;br /&gt;
** type: string&lt;br /&gt;
** USSD session identifier for the module that should process this message&lt;br /&gt;
* operation_type:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The type of operation that fired this message. &lt;br /&gt;
* text_encoding:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The MAP USSD data coding scheme&lt;br /&gt;
* text_encoded:&lt;br /&gt;
** type: hexified string&lt;br /&gt;
** The encoded USSD string&lt;br /&gt;
* text:&lt;br /&gt;
** type: string&lt;br /&gt;
** The decoded USSD string conforming to the USSD data coding scheme.&lt;br /&gt;
* text.encoding:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The USSD data coding scheme.&lt;br /&gt;
* text.lang:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** The language of the decoded text as obtained from the data coding scheme on MAP or from language indicator on SMPP.&lt;br /&gt;
* text.lang_indication:&lt;br /&gt;
** type: boolean&lt;br /&gt;
** True if the language was decoded from the USSD string and not from the data coding scheme or if should be encoded on MAP in the USSD string payload.&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error received from one the USSD session endpoints. It might be a MAP error when HLR/gsmSCF/ failed to process a request or SMPP error when the SMPP client failed to process a request.&lt;br /&gt;
&lt;br /&gt;
Returned parameters:&lt;br /&gt;
* error:&lt;br /&gt;
** type: keyword&lt;br /&gt;
** Error code if this message failed to be processed.&lt;br /&gt;
&lt;br /&gt;
Points of failure:&lt;br /&gt;
* The USSD session specified by 'peerid parameter cannot be found by the processing side.&lt;br /&gt;
* Processing of this message will return an error if there are mandatory parameters missing of if the parameters specify a value not allowed in the context of the USSD session&lt;br /&gt;
&lt;br /&gt;
===== Keyword values =====&lt;br /&gt;
&lt;br /&gt;
This section details acceptable values for parameters listed as having type ''keyword''.&lt;br /&gt;
&lt;br /&gt;
* '''hlr.nature/vlr.nature/gsmscf.nature/destination_reference.nature'''&lt;br /&gt;
** unknown&lt;br /&gt;
** international&lt;br /&gt;
** national&lt;br /&gt;
** network-specific&lt;br /&gt;
** subscriber&lt;br /&gt;
** abbreviated&lt;br /&gt;
&lt;br /&gt;
* '''hlr.plan/vlr.plan/gsmscf.plan/destination_reference.plan'''&lt;br /&gt;
** unknown&lt;br /&gt;
** isdn&lt;br /&gt;
** data&lt;br /&gt;
** telex&lt;br /&gt;
** land-mobile&lt;br /&gt;
** national&lt;br /&gt;
** private&lt;br /&gt;
&lt;br /&gt;
* '''operation_type'''&lt;br /&gt;
** pssd: mapping of MAP v1 USSD operation ''processUnstructuredSS-Data'' and of SMPP operation ''PSSD''. &lt;br /&gt;
** pssr: mapping of MAP v2 USSD operation ''processUnstructuredSS-Request'' and of SMPP operation ''PSSR''.&lt;br /&gt;
** ussr: mapping of MAP v2 USSD operation ''unstructuredSS-Request'' and of SMPP operation ''USSR&amp;quot;.&lt;br /&gt;
** ussn: mapping of MAP v2 USSD operation ''unstructuredSS-Notify'' and of SMPP operation ''USSN''.&lt;br /&gt;
&lt;br /&gt;
* '''error'''&lt;br /&gt;
** invalid_logic:  error reported when required processing does not follow USSD rules (e.g., MT request starting with ''processUnstructuredSS-Requests'')&lt;br /&gt;
** system_failure: error mapping for MAP error ''systemFailure''.&lt;br /&gt;
** data_missing: error mapping for  MAP error ''dataMissing''.&lt;br /&gt;
** unexpected_data: error mapping for MAP error ''unexpectedDataValue''.&lt;br /&gt;
** unknown_alphabet: error mapping for MAP error ''unknownAlphabet''.&lt;br /&gt;
** absent_subscriber: error mapping for MAP error ''absentSubscriber''.&lt;br /&gt;
** illegal_subscriber: error mapping for MAP error ''illegalSubscriber''.&lt;br /&gt;
** illegal_equipment: error mapping for MAP error ''illegalEquipment''.&lt;br /&gt;
** ussd_busy: error mapping for MAP error ''ussd-Busy''.&lt;br /&gt;
** call_barred: error mapping for MAP error ''callBarred''.&lt;br /&gt;
** network_failure: error signaling message transmission failure due to  connectivity issues either on the SS7 side or SMPP side.&lt;br /&gt;
** timeout_expired: error signaling a  request timeout occurrence.&lt;br /&gt;
** ussd_sess_end_abnormally: error signaling USSD session termination due to an unknown cause. Mapping for this error implies a TCAP Abort either being generated of received. &lt;br /&gt;
** unknown_error: error specified when there is no available mapping for an errror from SMPP to MAP or vice versa.&lt;br /&gt;
** throttling_error: error signaling that a message failed to be processed due to processing side being in congestion state.&lt;br /&gt;
** protocol_error: SMPP generic error. This error is put whenever there is a SMPP specific error that cannot be mapped into one of the other errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== SMPP custom parameters ====&lt;br /&gt;
&lt;br /&gt;
* 0x1502 =&amp;gt; IMSI;&lt;br /&gt;
* 0x1503 =&amp;gt; VLR Type of Number;&lt;br /&gt;
* 0x1504 =&amp;gt; VLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1505 =&amp;gt; VLR address;&lt;br /&gt;
* 0x1506 =&amp;gt; GSM SCF Type of Number;&lt;br /&gt;
* 0x1507 =&amp;gt; GSM SCF Numbering Plan Indicator;&lt;br /&gt;
* 0x1508 =&amp;gt; GSM_SCF address;&lt;br /&gt;
* 0x1509 =&amp;gt; Destination Reference Type of Number;&lt;br /&gt;
* 0x150a =&amp;gt; Destination Reference Numbering Plan Indicator;&lt;br /&gt;
* 0x150b =&amp;gt; Destination Reference;&lt;br /&gt;
* 0x150c =&amp;gt; MSISDN&lt;br /&gt;
* 0x150d =&amp;gt; Alerting Pattern&lt;br /&gt;
* 0x1800 =&amp;gt; HLR Type of Number;&lt;br /&gt;
* 0x1801 =&amp;gt; HLR Numbering Plan Indicator;&lt;br /&gt;
* 0x1802 =&amp;gt; HLR address.&lt;br /&gt;
&lt;br /&gt;
=== Configuration ===&lt;br /&gt;
&lt;br /&gt;
==== ysigchan module ====&lt;br /&gt;
&lt;br /&gt;
In order to have MAP connectivity, TCAP instances must be configured in ''ysigchan.conf'': &lt;br /&gt;
&lt;br /&gt;
 ; Example of a SS7 Transaction Capabilities Application Part&lt;br /&gt;
 ; This component is created when encountering a section of this kind&lt;br /&gt;
 ;[ss7tcap]&lt;br /&gt;
 ; type: keyword: identifies the component as a SS7 Transfer Capabilities Application Part&lt;br /&gt;
 ; type = ss7-tcap-ansi for ANSI TCAP&lt;br /&gt;
 ; type = ss7-tcap-itu for ITU TCAP&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; local_SSN: local SubSystem Number. Mandatory&lt;br /&gt;
 ;local_SSN=&lt;br /&gt;
 &lt;br /&gt;
 ; default_remote_SSN: remote SubSystem Number to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_SSN=&lt;br /&gt;
  &lt;br /&gt;
 ; default_remote_pointcode: remote Point Code to provide to SCCP if the application does not provide one&lt;br /&gt;
 ;default_remote_pointcode=&lt;br /&gt;
 &lt;br /&gt;
 ; pointcodetype: remote Point Code type. See above documentation for available types&lt;br /&gt;
 ;pointcodetype=&lt;br /&gt;
 &lt;br /&gt;
 ; sccp: Name of the SCCP component to create and be used by this TCAP&lt;br /&gt;
 ; A section with the name given here must exist in order to configure the SCCP level&lt;br /&gt;
 ;sccp=&lt;br /&gt;
 &lt;br /&gt;
 ; default_hopcounter: HopCounter provided to SCCP if the application does not provide one&lt;br /&gt;
 ; Values range 1-15, 0 or boolean false disables, boolean true sets to 15&lt;br /&gt;
 ; A non-zero value will force using XUDT or LUDT instead of UDT messages&lt;br /&gt;
 ;default_hopcounter=false&lt;br /&gt;
 &lt;br /&gt;
 ; transact_timeout: Time in seconds to timeout a TCAP transaction after no more activity was registered on it&lt;br /&gt;
 ; NOTE: Values below 15 seconds will be ignored and the timer will assume the default value.&lt;br /&gt;
 ; Defaults to 300 seconds&lt;br /&gt;
 ;transact_timeout=300&lt;br /&gt;
 &lt;br /&gt;
 ; max_timeout_checks: integer: Maximum number of timeout checks done on a transaction without starting the transaction&lt;br /&gt;
 ;  timer before forcefully starting the transaction timer&lt;br /&gt;
 ; Defaults to 10&lt;br /&gt;
 ;max_timeout_checks=10 &lt;br /&gt;
 &lt;br /&gt;
 ; timeout_check: Time interval in milliseconds to check for timeouts.&lt;br /&gt;
 ; Default to 100 ms&lt;br /&gt;
 ;timeout_check=100 &lt;br /&gt;
 &lt;br /&gt;
 ; floodevents: int: How many queued incoming TCAP messages trigger a congestion warning and the drop mechanism&lt;br /&gt;
 ;  for Unidirectional/Begin/QueryWithPermission/QueryWithoutPermission messages.&lt;br /&gt;
 ;  Exit from congestion will take place when there are less the floodevents/4 messages in the queue&lt;br /&gt;
 ; NOTE! Setting this parameter to 0 will disable the congestion warning and protection. Setting it to one will &lt;br /&gt;
 ;  be overriden and floodevents will be set to 2.&lt;br /&gt;
 ;floodevents=1000&lt;br /&gt;
 &lt;br /&gt;
 ;print-messages: Boolean to enable/disable printing of decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ;extended-debug: Boolean to enable/disable printing of the step-by-step decoding/encoding of TCAP messages&lt;br /&gt;
 ; This option applies on reload. print-messages must be true.&lt;br /&gt;
 ;extended-debug=false&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for keeping the list of current transactions&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
 [tcap-scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=147                                                                                                                                &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                     &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap-hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=ss7-tcap-itu                                                                                                                            &lt;br /&gt;
 sccp=sccp                                                                                                                                    &lt;br /&gt;
 local_SSN=7                                                                                                                                  &lt;br /&gt;
 pointcodetype=ITU                                                                                                                           &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 extended-debug=false                                                                                                                         &lt;br /&gt;
 transact_timeout=600                                                                                                                         &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Further configuration for SS7 connectivity is required (SCCP, MTP3, etc.).&lt;br /&gt;
&lt;br /&gt;
==== camel_map module ====&lt;br /&gt;
&lt;br /&gt;
Configuring of tracking IDs is done in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ;track_id: string: Shared engine variable name used to obtain a unique tracking ID for TCAP transactions&lt;br /&gt;
 ; If not set, the module will not set a tracking ID for the TCAP transaction&lt;br /&gt;
 ;track_id=&lt;br /&gt;
 &lt;br /&gt;
 ;track_id_base: string: Optional string with which to prefix the tracking ID&lt;br /&gt;
 ; This setting has no effect if track_id is not set&lt;br /&gt;
 ;track_id_base=&lt;br /&gt;
&lt;br /&gt;
In order to allow communication over MAP through SS7, sections configurating application should exist for each role of the ussd_map module (gsmSCF/HLR). A ''camel_map.conf'' section configuring an application looks like this:&lt;br /&gt;
 &lt;br /&gt;
 ;[local appName]&lt;br /&gt;
 ; This section configures a local application which transmits the XML messages as internal Yate messages&lt;br /&gt;
 &lt;br /&gt;
 ; translator: string: name of translator to be used by this application.&lt;br /&gt;
 ; Must be one one the [tcap ...] sections configured in the camel_map.conf file.&lt;br /&gt;
 ;translator=&lt;br /&gt;
  &lt;br /&gt;
 ; capabilities: string: List of capabilities separated by commas which this application supports&lt;br /&gt;
 ;capabilities=&lt;br /&gt;
  &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into a Yate message&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - string: pass the XML as a string&lt;br /&gt;
 ;  - object: pass the XML as an object&lt;br /&gt;
 ;  - both: pass the XML as a string and object&lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; enable: bool: Enable this application&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
&lt;br /&gt;
The translator setting refers to a section of the type defined below which configures atachement to a TCAP instance&lt;br /&gt;
&lt;br /&gt;
 ;[tcap map]&lt;br /&gt;
 ; This section configures a TCAP User MAP/CAMEL protocol translator&lt;br /&gt;
 &lt;br /&gt;
 ; enable: bool: Enable this translator&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of TCAP User &lt;br /&gt;
 ; Allowed values are MAP or CAMEL&lt;br /&gt;
 ;type=MAP&lt;br /&gt;
 &lt;br /&gt;
 ; host: IP address: Address on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ;host=127.0.0.1 &lt;br /&gt;
 &lt;br /&gt;
 ; port: integer: Port on which the TCP listener should bind on for XML communication&lt;br /&gt;
 ; Note: setting port to 0 will disable the listener, so it will not accept TCP applications&lt;br /&gt;
 ;port=5555&lt;br /&gt;
 &lt;br /&gt;
 ; tcap: string: Name of TCAP to which this TCAP user should attach itself to for the SS7 communication&lt;br /&gt;
 ;tcap=&lt;br /&gt;
 &lt;br /&gt;
 ; add-encoding: bool: Always add encoding attribute to XML elements for decoded parameters&lt;br /&gt;
 ;add-encoding=default from [general]&lt;br /&gt;
 &lt;br /&gt;
 ; add-timestamp: bool: Add to XML timestamps used for estimating application latency&lt;br /&gt;
 ;add-timestamp=default from [general] &lt;br /&gt;
 &lt;br /&gt;
 ; print-messages: bool: Debug option to print TCAP and XML messages. This option is applicable on reload.&lt;br /&gt;
 ;print-messages=false&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-string: string: Specifies what the ussd-String parameter will contain as data&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - octets: ussd-String will contain the octets as they were received&lt;br /&gt;
 ;  - text: ussd-String will contain the GSM7Bit decoded text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-string=text&lt;br /&gt;
 &lt;br /&gt;
 ; ussd-decode: string: Specifies what ussd-String parameters should be decoded into text&lt;br /&gt;
 ; Allowed values are:&lt;br /&gt;
 ;  - none: ussd-String parameters will never be decoded into text&lt;br /&gt;
 ;  - first: ussd-String in a TCAP Begin message will be decoded into text&lt;br /&gt;
 ;  - all: all ussd-String parameters will be decoded into text&lt;br /&gt;
 ; This can be overriden in application sections&lt;br /&gt;
 ;ussd-decode=all&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList used for mapping of TCAP transactions to applications&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For load sharing (especially in cases of high loads), you can configure multiple applications using the same translator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 applications acting as a gsmSCF, each one attached to the TCAP instance with gsmSCF SSN, and 2 applications as HLR, each one attached to the TCAP instance with HLR SSN 6:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 track_id=ussdgw&lt;br /&gt;
 track_id_base=ussdgw/&lt;br /&gt;
 &lt;br /&gt;
 [tcap scf]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-scf                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false                                                                                                                           &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [tcap hlr]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 tcap=tcap-hlr                                                                                                                                &lt;br /&gt;
 host=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=0                                                                                                                                       &lt;br /&gt;
 type=MAP                                                                                                                                     &lt;br /&gt;
 print-messages=false                                                                                                                         &lt;br /&gt;
 add-encoding=false   &lt;br /&gt;
 &lt;br /&gt;
 [local ussdSCF1]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=first                                                                                                                            &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 [local ussdSCF2]                                                                                                                             &lt;br /&gt;
 translator=scf                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=first               &lt;br /&gt;
 &lt;br /&gt;
 [local ussdHLR1]&lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=first                                                                                                                            &lt;br /&gt;
 &lt;br /&gt;
 [local ussdHLR2]                                                                                                                             &lt;br /&gt;
 translator=hlr                                                                                                                               &lt;br /&gt;
 capabilities=USSD                                                                                                                            &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 ussd-string=octets                                                                                                                           &lt;br /&gt;
 ussd-decode=first&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
The module is configured through ''ussd_map.conf''. The configuration file sets timeout parameters and processing threads parameters in the ''general'' section:&lt;br /&gt;
&lt;br /&gt;
 [general]&lt;br /&gt;
 &lt;br /&gt;
 ; hash_list_size: integer: Size of HashList for keeping dialogs&lt;br /&gt;
 ;hash_list_size=17&lt;br /&gt;
 &lt;br /&gt;
 ; component_ttl: integer: Component time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; Defaults to 600000 (10 minutes)&lt;br /&gt;
 ;component_ttl=600000&lt;br /&gt;
 &lt;br /&gt;
 ; dialog_idle_ttl: integer: Dialog idle (nothing sent/received) time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000&lt;br /&gt;
 ; It can be set to 0 to keep it alive until the remote party terminates the dialog&lt;br /&gt;
 ; Defaults to 86400000 (1 day)&lt;br /&gt;
 ;dialog_idle_ttl=86400000&lt;br /&gt;
&lt;br /&gt;
 ; dialog_ended_ttl: integer: Ended dialog time to live in milliseconds&lt;br /&gt;
 ; Minimum allowed value is 1000.&lt;br /&gt;
 ; It can be set to 0 to remove the dialog after termination&lt;br /&gt;
 ; Defaults to 0&lt;br /&gt;
 ;dialog_ended_ttl=0&lt;br /&gt;
 &lt;br /&gt;
 ; dispatcher_maxthreads: integer: Maximum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ; NOTE: if the value is set to 0, the module will enqueue the messages into YATE's engine.&lt;br /&gt;
 ;dispatcher_maxthreads=0&lt;br /&gt;
&lt;br /&gt;
 ; dispatcher_minthreads: integer: Minimum number of message dispatch threads to use&lt;br /&gt;
 ; Minimum value is 1 for use of dispatching threads.&lt;br /&gt;
 ;dispatcher_minthreads=1&lt;br /&gt;
&lt;br /&gt;
 ;dispatcher_priority: string: Default priority of message dispatch threads&lt;br /&gt;
 ;dispatcher_priority=normal&lt;br /&gt;
&lt;br /&gt;
 ; floodevents: integer: Threshold for signaling congestion when the number of messages waiting to be dispatched exceeds it.&lt;br /&gt;
 ; When entering congestion, all new MAP dialogs and USSD sessions will be refused.&lt;br /&gt;
 ; 0 disables the mechanism&lt;br /&gt;
 ;floodevents=0&lt;br /&gt;
&lt;br /&gt;
 ; congestion_exit_factor: double: Factor used to calculate the exit congestion threshold&lt;br /&gt;
 ; NOTE: if the factor results in a exit congestion threshold of 0 or greater than floodevents, &lt;br /&gt;
 ; the setting will be overriden and the exit congestion threshold will be set to 1.&lt;br /&gt;
 ;congestion_exit_factor=0.5&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Timeout settings should be correlated with timeout settings in TCAP and SMPP, each having its own timeout mechanism.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Gateway applications which do the MAP &amp;lt;-&amp;gt; USSD translation are configured through section like the one below:&lt;br /&gt;
&lt;br /&gt;
 [appName]&lt;br /&gt;
 ; section name is the name of the camel_map application, it must correspond to a [local appName] section in camel_map &lt;br /&gt;
&lt;br /&gt;
 ; enable: boolean: Enable this application&lt;br /&gt;
 ; Defaults to yes&lt;br /&gt;
 ;enable=yes&lt;br /&gt;
 &lt;br /&gt;
 ; type: string: Type of MAP &amp;lt;-&amp;gt; USSD translator: &lt;br /&gt;
 ;  - SCF means that is the part that receives new dialogs from the HLR (user initiated USSD)&lt;br /&gt;
 ;  - HLR is the part that receives new dialogs from gsmSCF (network initiated USSD)&lt;br /&gt;
 ; This setting cannot be changed on reload.&lt;br /&gt;
 ;type=&lt;br /&gt;
 &lt;br /&gt;
 ; export_xml_as: string: Specify in which way the XML will be passed along into &lt;br /&gt;
 ;export_xml_as=object&lt;br /&gt;
  &lt;br /&gt;
 ; print_msg: boolean: Print sent/received messages to output&lt;br /&gt;
 ;print_msg=no&lt;br /&gt;
  &lt;br /&gt;
 ; print_xml: boolean: Print sent/received XML data to output&lt;br /&gt;
 ;print_xml=no&lt;br /&gt;
 &lt;br /&gt;
 ; local_addr. : prefix: Parameters prefixed with this set the local SCCP address of this application &lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; local_addr.CallingPartyAddress.route=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.ssn=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.pointcode=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.nature=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.plan=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.translation=&lt;br /&gt;
 ; local_addr.CallingPartyAddress.gt.encoding= &lt;br /&gt;
 &lt;br /&gt;
 ; default_routing: bool : Do routing to default address for all messages&lt;br /&gt;
 ; default_routing=no&lt;br /&gt;
 &lt;br /&gt;
 ; default_addr. : prefix: parameters prefixed with this will be used as the default SCCP called address&lt;br /&gt;
 ; Meaningful values are:&lt;br /&gt;
 ; default_addr.application=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.route=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.ssn=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.pointcode=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.nature=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.translation=&lt;br /&gt;
 ; default_addr.CalledPartyAddress.gt.encoding=&lt;br /&gt;
 &lt;br /&gt;
 ; hlr_ssn: integer: The SSN expected in the calling address from a HLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;hlr_ssn=6&lt;br /&gt;
 &lt;br /&gt;
 ; vlr_ssn: integer: The SSN expected in the calling address from a VLR.&lt;br /&gt;
 ; This setting has significance only for SCF type applications&lt;br /&gt;
 ;vlr_ssn=7&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Each section should have its own equivalent in ''camel_map.conf''.&lt;br /&gt;
In the USSD GW scenario, at least tho applications are needed, one acting as SCF, one as HLR. For load sharing multiple gsmSCF and HLR applications can be configured (see the configuration example below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example'''&lt;br /&gt;
&lt;br /&gt;
The example below configures 2 gsmSCF applications and 2 HLR applications, each one corresponding with a application section in the ''camel_map.conf'' example:&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 component_ttl=600000                                                                                                                         &lt;br /&gt;
 dialog_ended_ttl=0                                                                                                                           &lt;br /&gt;
 dispatcher_maxthreads=10                                                                                                                     &lt;br /&gt;
 dispatcher_minthreads=5                                                                                                                      &lt;br /&gt;
 ;dispatcher_priority=normal                                                                                                                  &lt;br /&gt;
 floodevents=1000                                                                                                                             &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [ussdSCF1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
&lt;br /&gt;
 [ussdSCF2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=SCF                                                                                                                                     &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdHLR                                                                                                              &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820723                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd &lt;br /&gt;
 &lt;br /&gt;
 [ussdHLR1]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                         &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd                                                                                              &lt;br /&gt;
                                                   &lt;br /&gt;
 [ussdHLR2]                                                                                                                                   &lt;br /&gt;
 ;enable=no                                                                                                                                   &lt;br /&gt;
 type=HLR                                                                                                                                     &lt;br /&gt;
 print_msg=no                                                                                                                                 &lt;br /&gt;
 print_xml=no                                                                                                                                 &lt;br /&gt;
 export_xml_as=object                                                                                                                         &lt;br /&gt;
                                                                                                                                             &lt;br /&gt;
 local_addr.CallingPartyAddress.route=gt                                                                                                      &lt;br /&gt;
 local_addr.CallingPartyAddress.gt=8828723                                                                                                    &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.nature=international                                                                                       &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.plan=isdn                                                                                                  &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.translation=0                                                                                              &lt;br /&gt;
 local_addr.CallingPartyAddress.gt.encoding=bcd                                                                                               &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 default_routing=no                                                                                                                           &lt;br /&gt;
 default_addr.application=ussdSCF                                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.route=gt                                                                                                     &lt;br /&gt;
 default_addr.CalledPartyAddress.gt=8820457                                                                                                   &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.nature=international                                                                                      &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.plan=isdn                                                                                                 &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.translation=0                                                                                             &lt;br /&gt;
 default_addr.CalledPartyAddress.gt.encoding=bcd&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
TODO - configuration explanations&lt;br /&gt;
&lt;br /&gt;
'''Configuration Example''''&lt;br /&gt;
&lt;br /&gt;
 [general]                                                                                                                                    &lt;br /&gt;
 server=smpp-server                                                                                                                           &lt;br /&gt;
 track_id=ussdgw                                                                                                                              &lt;br /&gt;
 track_id_base=ussdgw/                                                                                                                        &lt;br /&gt;
                                                                                                                                              &lt;br /&gt;
 [smpp-server]                                                                                                                                &lt;br /&gt;
 enable=true                                                                                                                                  &lt;br /&gt;
 session_responseinterval=600000                                                                                                              &lt;br /&gt;
 sessionset_process_max=1                                                                                                                     &lt;br /&gt;
 codec_warndefaults=false                                                                                                                     &lt;br /&gt;
 print-messages=no                                                                                                                            &lt;br /&gt;
                                                                                                                                            &lt;br /&gt;
 [listenerserver server]                                                                                                                      &lt;br /&gt;
 ;enable=yes                                                                                                                                  &lt;br /&gt;
 addr=0.0.0.0                                                                                                                                 &lt;br /&gt;
 port=12345    &lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== Monitoring ===&lt;br /&gt;
&lt;br /&gt;
This section details comands through which the state of the USSD GW can be monitored.&lt;br /&gt;
&lt;br /&gt;
==== ussd_map module ====&lt;br /&gt;
&lt;br /&gt;
* '''Congestion state monitoring'''&lt;br /&gt;
&lt;br /&gt;
The ''ussd_map'' module will generate an alarm when entering/exiting a congestion state. If SNMP support is enabled, this will generate a trap on SNMP.&lt;br /&gt;
The congestion status is also reported in the ''state'' entry in the result of the module status command.&lt;br /&gt;
&lt;br /&gt;
* '''Module status'''&lt;br /&gt;
&lt;br /&gt;
The module reports its status through the following command in the YATE telnet console:&lt;br /&gt;
&lt;br /&gt;
 status ussd_map&lt;br /&gt;
&lt;br /&gt;
The command will print the following information:&lt;br /&gt;
&lt;br /&gt;
 workers=count_of_dispatching_threads,messages=count_msg,dialogs=count_of_dialogs,state=normal,count=count_of_applications;format=Type | CurrentDlgs| MAPCreated | UssdCreated |DefaultRouted | MAPSent | MapRecv | USSDSent | USSDRecv | MAPAbort | USSDAbort | BuiltAbort | MAPTimeouts | USSDTimeouts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where:&lt;br /&gt;
* workers: current number of used dispatching threads from the maximum configured pool (e.g., 3/10 means 3 threads are used of a pool of 10)&lt;br /&gt;
* messages: count of messages waiting on the dispatching queue of the engine&lt;br /&gt;
* dialogs: total number of USSD sessions currently handled by all applications&lt;br /&gt;
* state of the engine: normal/congestion&lt;br /&gt;
* count: number of applications acting either as gsmSCF, either as HLR&lt;br /&gt;
* format: name of the application for which the following data is reported:&lt;br /&gt;
** Type: role of the application: SCF (communicates with real HLR), HLR (communicates with real gsmSCF)&lt;br /&gt;
** CurrentDlgs: number of current MAP dialogs handled by this application&lt;br /&gt;
** MAPCreated: number of sessions (dialogs) started by the MAP side&lt;br /&gt;
** UssdCreated: number of sessions (dialogs) started by the SMPP side&lt;br /&gt;
** DefaultRouted: number of dialogs for which failover took place&lt;br /&gt;
** MAPSent: number of MAP messages sent to gsmSCF/HLR. It doesn't count the ones sent via failover routing.&lt;br /&gt;
** MAPRecv: number of MAP messages received from gsmSCF/HLR&lt;br /&gt;
** USSDSent: number of sent ussd.execute/ussd.update/ussd.finalize messages towards the SMPP side.&lt;br /&gt;
** USSDRecv: number of received ussd.execute/ussd.update/usdd.notify messages from SMPP side.&lt;br /&gt;
** MAPAbort: number of dialog aborts generated by MAP side&lt;br /&gt;
** USSDAbort: number of dialog aborts generated by USSD side&lt;br /&gt;
** BuiltAbort: number of dialog aborts generated by the ussd_map module (e.g., not having a ussd.update message processed by anyone will cause ussd_map to generate session abort)&lt;br /&gt;
** MAPTimeouts: number of dialog timeouts generated by MAP side&lt;br /&gt;
** USSDTimeouts: number of timeouts reported by USSD side&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Module control commands'''&lt;br /&gt;
&lt;br /&gt;
The module offers the following control commands through the telnet console:&lt;br /&gt;
* ''control ussd_map appName print-msg [yes|no|verbose]'' : enable printing of received/sent map./ussd./messages.&lt;br /&gt;
* ''control ussd_map appName print-xml [yes|no|verbose]'' : enable printing of received/sent XMLs.&lt;br /&gt;
* ''control ussd_map appName export-xml-as [string|object|both]'' : change the way XML is set in the internal messages&lt;br /&gt;
* ''control ussd_map start_stats'' : begin gathering data for statistics&lt;br /&gt;
* ''control ussd_map stop_stats'' : stop gathering data for statistics&lt;br /&gt;
* ''control usdd_map stats'' : print statistic data per engine and each application in part. Data contains number of MAP messages handled per second, number of USSD messages handled per second, maximum number of current dialogs, number of timeouts and number of aborts.&lt;br /&gt;
&lt;br /&gt;
==== ysmpp module ====&lt;br /&gt;
&lt;br /&gt;
The ysmpp module provides the following options for status command:&lt;br /&gt;
&lt;br /&gt;
'NOTE' the module_name can take the following values: smppserver or smppclient.&lt;br /&gt;
&lt;br /&gt;
* status module_name listeners&lt;br /&gt;
Prints the module listeners status in format: Address|Status|Reason.&lt;br /&gt;
&lt;br /&gt;
* status module_name sessions&lt;br /&gt;
Prints the status of the sessions in format: Id|State|BindMode|SystemId|IpAddress:Port|Congested|Incoming Queue|Outgoing Queue;&lt;br /&gt;
&lt;br /&gt;
** Id: The ID of the SMPP session. Can be used for routing.&lt;br /&gt;
** State: The state of the SMPP session.&lt;br /&gt;
** BindMode: The mode in which the session was bound. (Send/Recv/SendRecv)&lt;br /&gt;
** SystemId: The id with which the session has been authenticated. Can be used in routing.&lt;br /&gt;
** IpAddress:Port: The Ip Address and port of the remote end of the session.&lt;br /&gt;
** Congested: True if this session is in congestion state.&lt;br /&gt;
** Incoming Queue: The number of messages not processed in the incoming queue.&lt;br /&gt;
** Outgoing Queue: The number of messages not processed in the outgoing queue.&lt;br /&gt;
&lt;br /&gt;
*status module_name ussd overview&lt;br /&gt;
Prints the stats of the USSD sessions in format: Total|Active|Average Duration|Total Sent|Total Received|AverageTrafficPerSecond|EndedWithErrors|CongestionRefused&lt;br /&gt;
&lt;br /&gt;
** Total: the number of USSD sessions created since the starting of the program.&lt;br /&gt;
** Active: the number of USSD sessions currently active.&lt;br /&gt;
** Average Duration: average duration of a ussd session.&lt;br /&gt;
** Total Sent: total number of SMPP messages sent for USSD sessions.&lt;br /&gt;
** Total Received: total number of SMPP messages received for USSD sessions.&lt;br /&gt;
** AverageTrafficPerSecond: average traffic per second for USSD sessions.&lt;br /&gt;
** EndedWithErrors: the number of USSD sessions that ended with error.&lt;br /&gt;
** CongestionRefused: the number of USSD sessions refused because the server was overloaded.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* Mobile Application Part (MAP) specification: ETSI TE 129 002&lt;/div&gt;</summary>
		<author><name>Oana</name></author>	</entry>

	</feed>