<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>