<p>George Joseph <strong>submitted</strong> this change.</p><p><a href="https://gerrit.asterisk.org/c/asterisk/+/18015">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Joshua Colp: Looks good to me, but someone else must approve
  Kevin Harwell: Looks good to me, but someone else must approve
  George Joseph: Looks good to me, approved; Approved for Submit
  Friendly Automation: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">geolocation:  Add sample config file<br><br>This is the sample config file for res_geolocation.<br><br>Change-Id: Ieb809ed5f843c64528f00a3f08493f24cf4f0ee5<br>---<br>A configs/samples/geolocation.conf.sample<br>1 file changed, 418 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/configs/samples/geolocation.conf.sample b/configs/samples/geolocation.conf.sample</span><br><span>new file mode 100644</span><br><span>index 0000000..f8909ec</span><br><span>--- /dev/null</span><br><span>+++ b/configs/samples/geolocation.conf.sample</span><br><span>@@ -0,0 +1,418 @@</span><br><span style="color: hsl(120, 100%, 40%);">+;--</span><br><span style="color: hsl(120, 100%, 40%);">+  Geolocation Profile Sample Configuration</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  1. Overview</span><br><span style="color: hsl(120, 100%, 40%);">+  2. Location Object Description</span><br><span style="color: hsl(120, 100%, 40%);">+  3. Profile Object Description</span><br><span style="color: hsl(120, 100%, 40%);">+  4. Examples</span><br><span style="color: hsl(120, 100%, 40%);">+  5. Reference</span><br><span style="color: hsl(120, 100%, 40%);">+--;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+;-----------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+  Overview</span><br><span style="color: hsl(120, 100%, 40%);">+-----------------------------------------------------------------------;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+;--</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+A Geolocation information is actually comprised of two objects, a</span><br><span style="color: hsl(120, 100%, 40%);">+Location object, and a Profile object.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Location objects must contain one of the following:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  - Location information specified in Geographic Markup Language</span><br><span style="color: hsl(120, 100%, 40%);">+    (GML), civicAddress or unstructured formats.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  - A URI that points to externally hosted location information.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Profile objects contain instructions for the disposition of location</span><br><span style="color: hsl(120, 100%, 40%);">+information, an optional reference to a Location object, and updates</span><br><span style="color: hsl(120, 100%, 40%);">+or overrides to that Location object if specified.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Channel drivers and the dialplan functions are responsible for</span><br><span style="color: hsl(120, 100%, 40%);">+associating Profiles to endpoints/devices and calls.  Normally, two</span><br><span style="color: hsl(120, 100%, 40%);">+profiles would be assigned to an endpoint to control behavior in each</span><br><span style="color: hsl(120, 100%, 40%);">+direction and to optionally specify location information.  One for</span><br><span style="color: hsl(120, 100%, 40%);">+incoming calls (Asterisk is the UAS) and and one for outgoing calls</span><br><span style="color: hsl(120, 100%, 40%);">+(Asterisk is the UAC).</span><br><span style="color: hsl(120, 100%, 40%);">+--;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+GENERAL CAUTION:  You must coordinate with your upstream and downstream</span><br><span style="color: hsl(120, 100%, 40%);">+partners with regards to what location information is expected by each</span><br><span style="color: hsl(120, 100%, 40%);">+party and how it should be formatted.  An outgoing configuration</span><br><span style="color: hsl(120, 100%, 40%);">+mismatch for instance, could result in misinformation or no information</span><br><span style="color: hsl(120, 100%, 40%);">+being sent to an emergency response center or even call failure for</span><br><span style="color: hsl(120, 100%, 40%);">+which you are solely responsible.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+;-----------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+  Location Object Description</span><br><span style="color: hsl(120, 100%, 40%);">+-----------------------------------------------------------------------;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+;-- type -------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+Must be "location" to identify this configuration section as a</span><br><span style="color: hsl(120, 100%, 40%);">+Geolocation Location object.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+;-- format -----------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+Sets the format used to express the location.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Values:</span><br><span style="color: hsl(120, 100%, 40%);">+civicAddress: [RFC4119] [RFC5139] [RFC5491]</span><br><span style="color: hsl(120, 100%, 40%);">+              The location information will be placed in an XML document</span><br><span style="color: hsl(120, 100%, 40%);">+              conforming to the PIDF-LO standard.</span><br><span style="color: hsl(120, 100%, 40%);">+              For chan_pjsip, this will be placed in the body of</span><br><span style="color: hsl(120, 100%, 40%);">+              outgoing INVITE messages in addition to any SDP.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+GML:          [RFC4119] [RFC5491] [GeoShape]</span><br><span style="color: hsl(120, 100%, 40%);">+              The location information will be placed in an XML document</span><br><span style="color: hsl(120, 100%, 40%);">+              conforming to the PIDF-LO standard.</span><br><span style="color: hsl(120, 100%, 40%);">+              For chan_pjsip, this will be placed in the body of</span><br><span style="color: hsl(120, 100%, 40%);">+              outgoing INVITE messages in addition to any SDP.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+URI:          [RFC6442]</span><br><span style="color: hsl(120, 100%, 40%);">+              The external URI at which the the location information</span><br><span style="color: hsl(120, 100%, 40%);">+              can be found.  For chan_pjsip, this URI will be placed</span><br><span style="color: hsl(120, 100%, 40%);">+              in a "Geolocation" header in outgoing INVITE messages.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+There is no default.</span><br><span style="color: hsl(120, 100%, 40%);">+---------------------------------------------------;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+;-- location ---------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+The information describing the location.  The format depends on the</span><br><span style="color: hsl(120, 100%, 40%);">+"format" parameter set above.  For readability, multiple "location"</span><br><span style="color: hsl(120, 100%, 40%);">+parameters can be specified and they will be concatenated into one</span><br><span style="color: hsl(120, 100%, 40%);">+specification.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+--- For civicAddress format:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+The following table lists the IANA registered element names that are</span><br><span style="color: hsl(120, 100%, 40%);">+currently accepted.  The left column contains the official IANA</span><br><span style="color: hsl(120, 100%, 40%);">+registered codes and the right column contains completely unofficial</span><br><span style="color: hsl(120, 100%, 40%);">+synonyms accepted by res_geolocation.  On outgoing messages, the</span><br><span style="color: hsl(120, 100%, 40%);">+synonyms will be translated to the official IANA code.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+See [RFC5139] and [RFC5491]</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+|---------|--------------------------|</span><br><span style="color: hsl(120, 100%, 40%);">+| Code    | Unofficial Synonym       |</span><br><span style="color: hsl(120, 100%, 40%);">+|---------|--------------------------|</span><br><span style="color: hsl(120, 100%, 40%);">+| country | country                  |</span><br><span style="color: hsl(120, 100%, 40%);">+| A1      | state_province           |</span><br><span style="color: hsl(120, 100%, 40%);">+| A2      | county_district          |</span><br><span style="color: hsl(120, 100%, 40%);">+| A3      | city                     |</span><br><span style="color: hsl(120, 100%, 40%);">+| A4      | district                 |</span><br><span style="color: hsl(120, 100%, 40%);">+| A5      | neighborhood             |</span><br><span style="color: hsl(120, 100%, 40%);">+| A6      | street_group             |</span><br><span style="color: hsl(120, 100%, 40%);">+| ADDCODE | additional_code          |</span><br><span style="color: hsl(120, 100%, 40%);">+| BLD     | building                 |</span><br><span style="color: hsl(120, 100%, 40%);">+| FLR     | floor                    |</span><br><span style="color: hsl(120, 100%, 40%);">+| HNO     | house_number             |</span><br><span style="color: hsl(120, 100%, 40%);">+| HNS     | house_number_suffix      |</span><br><span style="color: hsl(120, 100%, 40%);">+| LMK     | landmark                 |</span><br><span style="color: hsl(120, 100%, 40%);">+| LOC     | additional_location      |</span><br><span style="color: hsl(120, 100%, 40%);">+| NAM     | location_name            |</span><br><span style="color: hsl(120, 100%, 40%);">+| PC      | postal_code              |</span><br><span style="color: hsl(120, 100%, 40%);">+| PCN     | postal_community         |</span><br><span style="color: hsl(120, 100%, 40%);">+| PLC     | place_type               |</span><br><span style="color: hsl(120, 100%, 40%);">+| POBOX   | po_box                   |</span><br><span style="color: hsl(120, 100%, 40%);">+| POD     | trailing_street_suffix   |</span><br><span style="color: hsl(120, 100%, 40%);">+| POM     | road_post_modifier       |</span><br><span style="color: hsl(120, 100%, 40%);">+| PRD     | leading_road_direction   |</span><br><span style="color: hsl(120, 100%, 40%);">+| PRM     | road_pre_modifier        |</span><br><span style="color: hsl(120, 100%, 40%);">+| RD      | road                     |</span><br><span style="color: hsl(120, 100%, 40%);">+| RDBR    | road_branch              |</span><br><span style="color: hsl(120, 100%, 40%);">+| RDSEC   | road_section             |</span><br><span style="color: hsl(120, 100%, 40%);">+| RDSUBBR | road_sub_branch          |</span><br><span style="color: hsl(120, 100%, 40%);">+| ROOM    | room                     |</span><br><span style="color: hsl(120, 100%, 40%);">+| SEAT    | seat                     |</span><br><span style="color: hsl(120, 100%, 40%);">+| STS     | street_suffix            |</span><br><span style="color: hsl(120, 100%, 40%);">+| UNIT    | unit                     |</span><br><span style="color: hsl(120, 100%, 40%);">+|---------|--------------------------|</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Example with mix of Codes and Synonyms:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+format = civicAddress</span><br><span style="color: hsl(120, 100%, 40%);">+location = country=US</span><br><span style="color: hsl(120, 100%, 40%);">+location = A1="New York"</span><br><span style="color: hsl(120, 100%, 40%);">+location = A3="New York", city_division=Manhattan, house_number=1633,</span><br><span style="color: hsl(120, 100%, 40%);">+location = PRD=W, street=46th, street_suffix = Street,postal_code=10222</span><br><span style="color: hsl(120, 100%, 40%);">+; Note the use of the replacement variables for floor and room.</span><br><span style="color: hsl(120, 100%, 40%);">+; A profile that references this location can set those variables</span><br><span style="color: hsl(120, 100%, 40%);">+; to further refine the location.  You can also use any existing</span><br><span style="color: hsl(120, 100%, 40%);">+; variables from the channel using this Location object.</span><br><span style="color: hsl(120, 100%, 40%);">+location = floor=${my_floor},room=${my_room}</span><br><span style="color: hsl(120, 100%, 40%);">+; A Profile object can also append to, or replace any existing items</span><br><span style="color: hsl(120, 100%, 40%);">+; in the location parameter.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+--- For GML format:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+The following table contains the GML 3.1 acceptable shape types</span><br><span style="color: hsl(120, 100%, 40%);">+and their attributes.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+See: [RFC5491] [GeoShape]</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+|------------|--------------------------------------|</span><br><span style="color: hsl(120, 100%, 40%);">+| Shape type |  Attributes                          |</span><br><span style="color: hsl(120, 100%, 40%);">+|------------|--------------------------------------|</span><br><span style="color: hsl(120, 100%, 40%);">+| Point      | pos                                  |</span><br><span style="color: hsl(120, 100%, 40%);">+| Polygon    | pos, pos, pos, ...                   |</span><br><span style="color: hsl(120, 100%, 40%);">+| Circle     | pos, radius                          |</span><br><span style="color: hsl(120, 100%, 40%);">+| Ellipse    | pos, semiMajorAxis, semiMinorAxis    |</span><br><span style="color: hsl(120, 100%, 40%);">+|            | orientation, orientation_uom         |</span><br><span style="color: hsl(120, 100%, 40%);">+| ArcBand    | pos, innerRadius, outerRadius,       |</span><br><span style="color: hsl(120, 100%, 40%);">+|            | startAngle, startAngle_uom,          |</span><br><span style="color: hsl(120, 100%, 40%);">+|            | openingAngle, openingAngle_uom       |</span><br><span style="color: hsl(120, 100%, 40%);">+| Sphere     | pos (must include altitude), radius  |</span><br><span style="color: hsl(120, 100%, 40%);">+| Ellipsoid  | pos (must include altitude),         |</span><br><span style="color: hsl(120, 100%, 40%);">+|            | semiMajorAxis, semiMinorAxis,        |</span><br><span style="color: hsl(120, 100%, 40%);">+|            | verticalAxis, orientation,           |</span><br><span style="color: hsl(120, 100%, 40%);">+|            | orientation_uom                      |</span><br><span style="color: hsl(120, 100%, 40%);">+| Prism      | pos, pos, pos, ..., height           |</span><br><span style="color: hsl(120, 100%, 40%);">+|            | All positions must include altitude  |</span><br><span style="color: hsl(120, 100%, 40%);">+|            | and all must be the same altitude.   |</span><br><span style="color: hsl(120, 100%, 40%);">+|------------|--------------------------------------|</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+All distances (altitude, radius, axis, etc) must be in</span><br><span style="color: hsl(120, 100%, 40%);">+meters.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+All angles must be in degrees or radians as specified</span><br><span style="color: hsl(120, 100%, 40%);">+in the *_uom attribute.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Examples:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+format = GML</span><br><span style="color: hsl(120, 100%, 40%);">+; A 2D point</span><br><span style="color: hsl(120, 100%, 40%);">+location = type=Point, pos="${mylat} ${mylon}"</span><br><span style="color: hsl(120, 100%, 40%);">+; As with civicAddress, you can use replacement variables.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+; A 3D point.  Altitude must be in meters.</span><br><span style="color: hsl(120, 100%, 40%);">+location = type=Point, pos="39.12345 -105.98765 1875.0"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+; A polygon (actually a triangle)</span><br><span style="color: hsl(120, 100%, 40%);">+location = type=Polygon</span><br><span style="color: hsl(120, 100%, 40%);">+location = pos="39.12345 -105.98766"</span><br><span style="color: hsl(120, 100%, 40%);">+location = pos="39.4500  -105.98766"</span><br><span style="color: hsl(120, 100%, 40%);">+location = pos="39.67890 -105.01346"</span><br><span style="color: hsl(120, 100%, 40%);">+location = pos="39.12345 -105.98766"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+; A circle</span><br><span style="color: hsl(120, 100%, 40%);">+location = type=Circle, pos="39.12345 -105.98766", radius=100</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+; An ellipse</span><br><span style="color: hsl(120, 100%, 40%);">+location = type=Ellipse, pos="39.12345 -105.98766"</span><br><span style="color: hsl(120, 100%, 40%);">+location = semiMajorAxis = 600, semiMinorAxis=45</span><br><span style="color: hsl(120, 100%, 40%);">+location = orientation = 95, orientation_uom = radians</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+; A prism using the polygon above as an example</span><br><span style="color: hsl(120, 100%, 40%);">+location = type=Polygon</span><br><span style="color: hsl(120, 100%, 40%);">+location = pos="39.12345 -105.98766 1866"</span><br><span style="color: hsl(120, 100%, 40%);">+location = pos="39.4500  -105.98766 1866"</span><br><span style="color: hsl(120, 100%, 40%);">+location = pos="39.67890 -105.01346 1866"</span><br><span style="color: hsl(120, 100%, 40%);">+location = pos="39.12345 -105.98766 1866"</span><br><span style="color: hsl(120, 100%, 40%);">+location = height = 10</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+NOTE:  You can't mix and match shape types.  A location</span><br><span style="color: hsl(120, 100%, 40%);">+can only be specified by one shape.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+--- For URI format</span><br><span style="color: hsl(120, 100%, 40%);">+Example:</span><br><span style="color: hsl(120, 100%, 40%);">+format = URI</span><br><span style="color: hsl(120, 100%, 40%);">+location = URI=https://some.company.com?number=${phone_number}</span><br><span style="color: hsl(120, 100%, 40%);">+; Set phone_number="8005551212" would result in a Geolocation</span><br><span style="color: hsl(120, 100%, 40%);">+; header being sent as follows:</span><br><span style="color: hsl(120, 100%, 40%);">+: Geolocation: <https://some.company.com?number=8005551212></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+---------------------------------------------------;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+;-----------------------------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+  Profile Object Descriptions</span><br><span style="color: hsl(120, 100%, 40%);">+-----------------------------------------------------------------------;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+;-- type -------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+Must be "profile" to identify this configuration section as a</span><br><span style="color: hsl(120, 100%, 40%);">+Geolocation Profile object.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+;-- pidf_lo_section -------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+If the format is civicAddress or GML, this sets the PIDF element into</span><br><span style="color: hsl(120, 100%, 40%);">+which the location information will be placed.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Values:</span><br><span style="color: hsl(120, 100%, 40%);">+tuple:  Places the information in a "tuple" element.</span><br><span style="color: hsl(120, 100%, 40%);">+device: Places the information in a "device" element.</span><br><span style="color: hsl(120, 100%, 40%);">+person: Places the information in a "person" element.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Per [RFC5491], "device" is preferred and therefore the default.</span><br><span style="color: hsl(120, 100%, 40%);">+---------------------------------------------------;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+;-- geolocation-routing ---------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Sets whether the "Geolocation-Routing" header is added to outgoing</span><br><span style="color: hsl(120, 100%, 40%);">+requests.  Set to "yes" to indicate that servers later in the path</span><br><span style="color: hsl(120, 100%, 40%);">+can use the location information for routing purposes.  Set to "no"</span><br><span style="color: hsl(120, 100%, 40%);">+if they should not.  If this value isn't specified, no</span><br><span style="color: hsl(120, 100%, 40%);">+"Geolocation-Routing" header will be added.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+;-- received_location_disposition ----------------</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+On an incoming call leg, this sets what the channel driver should do</span><br><span style="color: hsl(120, 100%, 40%);">+with location information received from the remote party.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+On an outgoing call leg, this sets what the channel driver should do</span><br><span style="color: hsl(120, 100%, 40%);">+with location information received from the core/dialplan/incoming channel.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Values:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+discard:  Discard location specification received.</span><br><span style="color: hsl(120, 100%, 40%);">+append:   Add the location specification after any configured one.</span><br><span style="color: hsl(120, 100%, 40%);">+prepend:  Add the location specification before any configured one.</span><br><span style="color: hsl(120, 100%, 40%);">+replace:  Replace the configured specification with the incoming one.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[RFC5491] has specific requirements for multiple locations in a single</span><br><span style="color: hsl(120, 100%, 40%);">+document which you should understand before allowing multiple locations.</span><br><span style="color: hsl(120, 100%, 40%);">+For that reason, "replace" is the default action.</span><br><span style="color: hsl(120, 100%, 40%);">+---------------------------------------------------;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+;-- send_location ----------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+On an incoming call leg, this sets whether the channel driver should</span><br><span style="color: hsl(120, 100%, 40%);">+forward location information to the dialplan.  The dialplan can</span><br><span style="color: hsl(120, 100%, 40%);">+retrieve then add/modify/delete the information and decide whether to</span><br><span style="color: hsl(120, 100%, 40%);">+forward the information to the outgoing channel.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+On an outcoming call leg, this sets whether the channel driver should</span><br><span style="color: hsl(120, 100%, 40%);">+forward location information to the remote party.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Values:</span><br><span style="color: hsl(120, 100%, 40%);">+yes:  Forward location info.</span><br><span style="color: hsl(120, 100%, 40%);">+no:   Do not forward any location info.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+The default is 'no".</span><br><span style="color: hsl(120, 100%, 40%);">+---------------------------------------------------;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+;-- location_reference -----------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+The name of an existing Location object if this profile requires one.</span><br><span style="color: hsl(120, 100%, 40%);">+The location_refinement and location_variables parameters below can be</span><br><span style="color: hsl(120, 100%, 40%);">+used to refine the Location object for this specific Profile.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+location_reference = "my_building"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+---------------------------------------------------;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+;-- location_refinement -----------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+The information in the referenced Location object can be refined on a per-profile</span><br><span style="color: hsl(120, 100%, 40%);">+basis.  For example, if the referenced Location object has a civicAddress for a</span><br><span style="color: hsl(120, 100%, 40%);">+building, you could set location_refinement to add a floor and room just for this</span><br><span style="color: hsl(120, 100%, 40%);">+profile</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+location_refinement = floor=20, room=20a2</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+---------------------------------------------------;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+;-- location_variables -----------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+If the referenced Location object uses any replacement variables, they</span><br><span style="color: hsl(120, 100%, 40%);">+can be assigned here.  There is no need to define variables that come</span><br><span style="color: hsl(120, 100%, 40%);">+from the channel using this profile.  They get assigned automatically.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+location_variables = myfloor=20, myroom=222</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+---------------------------------------------------;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+;---------------------------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+  Examples</span><br><span style="color: hsl(120, 100%, 40%);">+---------------------------------------------------;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+; Create a Location Object for a building</span><br><span style="color: hsl(120, 100%, 40%);">+[building_1]</span><br><span style="color: hsl(120, 100%, 40%);">+type = location</span><br><span style="color: hsl(120, 100%, 40%);">+format = civicAddress</span><br><span style="color: hsl(120, 100%, 40%);">+location = country=US</span><br><span style="color: hsl(120, 100%, 40%);">+location = A1="New York"</span><br><span style="color: hsl(120, 100%, 40%);">+location = A3="New York", city_division=Manhattan, house_number=234,</span><br><span style="color: hsl(120, 100%, 40%);">+location = PRD=W, street=42nd, street_suffix = Street</span><br><span style="color: hsl(120, 100%, 40%);">+location = postal_code=10036</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+; Create a Profile Object for calls coming in from</span><br><span style="color: hsl(120, 100%, 40%);">+; Bob's phone.</span><br><span style="color: hsl(120, 100%, 40%);">+[bobs_incoming_profile]</span><br><span style="color: hsl(120, 100%, 40%);">+type = profile</span><br><span style="color: hsl(120, 100%, 40%);">+; Don't take any location info from the phone itself.</span><br><span style="color: hsl(120, 100%, 40%);">+received_location_disposition = discard</span><br><span style="color: hsl(120, 100%, 40%);">+; Forward configured info to the core</span><br><span style="color: hsl(120, 100%, 40%);">+send_location = yes</span><br><span style="color: hsl(120, 100%, 40%);">+; Send a "Geolocation-Routing" header with a value of "no".</span><br><span style="color: hsl(120, 100%, 40%);">+geolocation_routing = no</span><br><span style="color: hsl(120, 100%, 40%);">+; Use the referenced location</span><br><span style="color: hsl(120, 100%, 40%);">+location_reference = building_1</span><br><span style="color: hsl(120, 100%, 40%);">+; And refine it by adding floor and room.</span><br><span style="color: hsl(120, 100%, 40%);">+location_refinement = floor=20,room=20A2</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+; We never want to send location info to Bob's phone</span><br><span style="color: hsl(120, 100%, 40%);">+; This is the default if no profile is assigned.</span><br><span style="color: hsl(120, 100%, 40%);">+[bobs_outgoing_profile]</span><br><span style="color: hsl(120, 100%, 40%);">+type = profile</span><br><span style="color: hsl(120, 100%, 40%);">+received_location_disposition = discard</span><br><span style="color: hsl(120, 100%, 40%);">+send_location = no</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+; Now create a Profile for Alice.</span><br><span style="color: hsl(120, 100%, 40%);">+[alices_incoming_profile]</span><br><span style="color: hsl(120, 100%, 40%);">+type = profile</span><br><span style="color: hsl(120, 100%, 40%);">+received_location_disposition = discard</span><br><span style="color: hsl(120, 100%, 40%);">+send_location = yes</span><br><span style="color: hsl(120, 100%, 40%);">+geolocation-routing = no</span><br><span style="color: hsl(120, 100%, 40%);">+location_reference = building1</span><br><span style="color: hsl(120, 100%, 40%);">+location_refinement = floor=30,room=30A3</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+; Don't bother with a profile for calls going out to</span><br><span style="color: hsl(120, 100%, 40%);">+; Alice's phone since the default is to not send anything.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+; --------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+; Let's say you have location information in a web-accessable</span><br><span style="color: hsl(120, 100%, 40%);">+; location keyed by extension...</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[building1]</span><br><span style="color: hsl(120, 100%, 40%);">+type = location</span><br><span style="color: hsl(120, 100%, 40%);">+format=URI</span><br><span style="color: hsl(120, 100%, 40%);">+location=URI=https://some.company.com?building=bldg1&number=${EXTEN}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+; ...and you have a profile set up for building 1 employees...</span><br><span style="color: hsl(120, 100%, 40%);">+[building1_employees]</span><br><span style="color: hsl(120, 100%, 40%);">+type = profile</span><br><span style="color: hsl(120, 100%, 40%);">+location_reference = building1</span><br><span style="color: hsl(120, 100%, 40%);">+send_location = yes</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+; Since EXTEN is a channel variable, if an employee's extension was 5678,</span><br><span style="color: hsl(120, 100%, 40%);">+; and they made a call, the resulting Geolocation header would look like:</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+; Geolocation: <https://some.company.com?building=bldg1&number=5678></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+;-------------------------------</span><br><span style="color: hsl(120, 100%, 40%);">+----------- REFERENCE ----------</span><br><span style="color: hsl(120, 100%, 40%);">+-------------------------------;</span><br><span style="color: hsl(120, 100%, 40%);">+;--</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[RFC4119]  A Presence-based GEOPRIV Location Object Format</span><br><span style="color: hsl(120, 100%, 40%);">+           https://www.rfc-editor.org/rfc/rfc4119.html</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[RFC5139]  Revised Civic Location Format for Presence Information Data</span><br><span style="color: hsl(120, 100%, 40%);">+           Format Location Object (PIDF-LO)</span><br><span style="color: hsl(120, 100%, 40%);">+           https://www.rfc-editor.org/rfc/rfc5139</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[RFC5491]  GEOPRIV Presence Information Data Format Location Object (PIDF-LO)</span><br><span style="color: hsl(120, 100%, 40%);">+           Usage Clarification, Considerations, and Recommendations</span><br><span style="color: hsl(120, 100%, 40%);">+           https://www.rfc-editor.org/rfc/rfc5491.html</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[RFC6442]  Location Conveyance for the Session Initiation Protocol</span><br><span style="color: hsl(120, 100%, 40%);">+           https://www.rfc-editor.org/rfc/rfc6442.html</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+[GeoShape] GML 3.1.1 PIDF-LO Shape Application Schema for use by the</span><br><span style="color: hsl(120, 100%, 40%);">+           Internet Engineering Task Force (IETF)</span><br><span style="color: hsl(120, 100%, 40%);">+           https://portal.ogc.org/files/?artifact_id=21630</span><br><span style="color: hsl(120, 100%, 40%);">+--;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span></span><br></pre><div style="white-space:pre-wrap"></div><p>To view, visit <a href="https://gerrit.asterisk.org/c/asterisk/+/18015">change 18015</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.asterisk.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.asterisk.org/c/asterisk/+/18015"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: asterisk </div>
<div style="display:none"> Gerrit-Branch: development/16/geolocation </div>
<div style="display:none"> Gerrit-Change-Id: Ieb809ed5f843c64528f00a3f08493f24cf4f0ee5 </div>
<div style="display:none"> Gerrit-Change-Number: 18015 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: George Joseph <gjoseph@digium.com> </div>
<div style="display:none"> Gerrit-Reviewer: Friendly Automation </div>
<div style="display:none"> Gerrit-Reviewer: George Joseph <gjoseph@digium.com> </div>
<div style="display:none"> Gerrit-Reviewer: Joshua Colp <jcolp@sangoma.com> </div>
<div style="display:none"> Gerrit-Reviewer: Kevin Harwell <kharwell@digium.com> </div>
<div style="display:none"> Gerrit-Reviewer: N A <mail@interlinked.x10host.com> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>