<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic SIP Normalization Script to Add Diversion Header Based on Calling Number in Call Control</title>
    <link>https://community.cisco.com/t5/call-control/sip-normalization-script-to-add-diversion-header-based-on/m-p/3525269#M1423</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm new to the normalization scripting but I wrote a script to add a diversion header to an outgoing call based on the calling number.&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is a short version of the script:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;--get contents of To header&lt;/P&gt;&lt;P&gt;--if contents of To header is not 911, get contents of From header&lt;/P&gt;&lt;P&gt;--if From header is 202555XXXX, add diversion header of 2025551212, repeat for all number ranges&lt;/P&gt;&lt;P&gt;--if From header does not match any of our configured number ranges, add diversion header of 2125551212&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;M = {}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;--change to trace.enable() to have trace output in SDI&lt;/P&gt;&lt;P&gt;--trace.disable()&amp;nbsp; &lt;/P&gt;&lt;P&gt;trace.enable()&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;--specify diversion headers for each office&lt;/P&gt;&lt;P&gt;local addDiversionOffice1 = "&amp;lt;sip:2025551212@10.10.10.10&amp;gt;"&lt;/P&gt;&lt;P&gt;local addDiversionOffice2 = "&amp;lt;sip:3125551212@10.10.10.10&amp;gt;"&lt;/P&gt;&lt;P&gt;local addDiversionOffice2 = "&amp;lt;sip:310555121210.10.10.10&amp;gt;"&lt;/P&gt;&lt;P&gt;local addDiversionDefault = "&amp;lt;sip:2125551212@10.10.10.10&amp;gt;" &lt;/P&gt;&lt;P&gt;--default diversion header catch-all header if no matches&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;function M.outbound_INVITE(msg) &lt;/P&gt;&lt;P&gt;--specifies this function only for outbound invites&lt;/P&gt;&lt;P&gt;&amp;nbsp; local calledNumber = msg:getHeader ("To") &lt;/P&gt;&lt;P&gt;&amp;nbsp; --get To header to determine called number&lt;/P&gt;&lt;P&gt;&amp;nbsp; local emergencyCall = string.find (calledNumber, "sip:911@") &lt;/P&gt;&lt;P&gt;&amp;nbsp; --search for 911 in called number&lt;/P&gt;&lt;P&gt;&amp;nbsp; if emergencyCall == nil&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then&lt;/P&gt;&lt;P&gt;&amp;nbsp; local callingNumber = msg:getHeader ("From") &lt;/P&gt;&lt;P&gt;&amp;nbsp; --get From header to determine calling number&lt;/P&gt;&lt;P&gt;&amp;nbsp; --begin searching from header for calling number from each number range&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; local callingNumberOffice1 = string.find (callingNumber, "sip:202555%d%d%d%d")&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; local callingNumberOffice2 = string.find (callingNumber, "sip:312555%d%d%d%d")&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; local callingNumberOffice3 = string.find (callingNumber, "sip:310555%d%d%d%d")&lt;/P&gt;&lt;P&gt;&amp;nbsp; --begin applying diversion header based on calling number&lt;/P&gt;&lt;P&gt;&amp;nbsp; if(callingNumberOffice1) &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then&lt;/P&gt;&lt;P&gt;&amp;nbsp; msg:removeHeader ("Diversion") &lt;/P&gt;&lt;P&gt;&amp;nbsp; --removing diversion header in case it already exists&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msg:addHeader("Diversion", addDiversionOffice1)&lt;/P&gt;&lt;P&gt;&amp;nbsp; --adding new diversion header back to call&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elseif(callingNumberOffice2) &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then&lt;/P&gt;&lt;P&gt;&amp;nbsp; msg:removeHeader ("Diversion")&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msg:addHeader("Diversion", addDiversionOffice2) &lt;/P&gt;&lt;P&gt;&amp;nbsp; elseif(callingNumberOffice3) &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then&lt;/P&gt;&lt;P&gt;&amp;nbsp; msg:removeHeader ("Diversion")&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msg:addHeader("Diversion", addDiversionOffice3) &lt;/P&gt;&lt;P&gt;&amp;nbsp; else --apply default diversion header&lt;/P&gt;&lt;P&gt;&amp;nbsp; msg:removeHeader ("Diversion")&lt;/P&gt;&lt;P&gt;&amp;nbsp; msg:addHeader ("Diversion", addDiversionDefault)&lt;/P&gt;&lt;P&gt;&amp;nbsp; end&lt;/P&gt;&lt;P&gt;&amp;nbsp; end&lt;/P&gt;&lt;P&gt;end&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;return M&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The problem is that with the full script, there are 50 different offices and 50 different if/then statements.&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Does anyone know of a way to make this simpler or more efficient?&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I see this &lt;A href="http://lua-users.org/wiki/SwitchStatement" title="http://lua-users.org/wiki/SwitchStatement"&gt;lua-users wiki: Switch Statement&lt;/A&gt; page gives some info on how to do it with a lookup table, but I can't figure out how they corresponds to what i'm trying to do.&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any help please?&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 20 Apr 2017 15:34:09 GMT</pubDate>
    <dc:creator>nickwarfield</dc:creator>
    <dc:date>2017-04-20T15:34:09Z</dc:date>
    <item>
      <title>SIP Normalization Script to Add Diversion Header Based on Calling Number</title>
      <link>https://community.cisco.com/t5/call-control/sip-normalization-script-to-add-diversion-header-based-on/m-p/3525269#M1423</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm new to the normalization scripting but I wrote a script to add a diversion header to an outgoing call based on the calling number.&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is a short version of the script:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;--get contents of To header&lt;/P&gt;&lt;P&gt;--if contents of To header is not 911, get contents of From header&lt;/P&gt;&lt;P&gt;--if From header is 202555XXXX, add diversion header of 2025551212, repeat for all number ranges&lt;/P&gt;&lt;P&gt;--if From header does not match any of our configured number ranges, add diversion header of 2125551212&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;M = {}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;--change to trace.enable() to have trace output in SDI&lt;/P&gt;&lt;P&gt;--trace.disable()&amp;nbsp; &lt;/P&gt;&lt;P&gt;trace.enable()&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;--specify diversion headers for each office&lt;/P&gt;&lt;P&gt;local addDiversionOffice1 = "&amp;lt;sip:2025551212@10.10.10.10&amp;gt;"&lt;/P&gt;&lt;P&gt;local addDiversionOffice2 = "&amp;lt;sip:3125551212@10.10.10.10&amp;gt;"&lt;/P&gt;&lt;P&gt;local addDiversionOffice2 = "&amp;lt;sip:310555121210.10.10.10&amp;gt;"&lt;/P&gt;&lt;P&gt;local addDiversionDefault = "&amp;lt;sip:2125551212@10.10.10.10&amp;gt;" &lt;/P&gt;&lt;P&gt;--default diversion header catch-all header if no matches&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;function M.outbound_INVITE(msg) &lt;/P&gt;&lt;P&gt;--specifies this function only for outbound invites&lt;/P&gt;&lt;P&gt;&amp;nbsp; local calledNumber = msg:getHeader ("To") &lt;/P&gt;&lt;P&gt;&amp;nbsp; --get To header to determine called number&lt;/P&gt;&lt;P&gt;&amp;nbsp; local emergencyCall = string.find (calledNumber, "sip:911@") &lt;/P&gt;&lt;P&gt;&amp;nbsp; --search for 911 in called number&lt;/P&gt;&lt;P&gt;&amp;nbsp; if emergencyCall == nil&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then&lt;/P&gt;&lt;P&gt;&amp;nbsp; local callingNumber = msg:getHeader ("From") &lt;/P&gt;&lt;P&gt;&amp;nbsp; --get From header to determine calling number&lt;/P&gt;&lt;P&gt;&amp;nbsp; --begin searching from header for calling number from each number range&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; local callingNumberOffice1 = string.find (callingNumber, "sip:202555%d%d%d%d")&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; local callingNumberOffice2 = string.find (callingNumber, "sip:312555%d%d%d%d")&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; local callingNumberOffice3 = string.find (callingNumber, "sip:310555%d%d%d%d")&lt;/P&gt;&lt;P&gt;&amp;nbsp; --begin applying diversion header based on calling number&lt;/P&gt;&lt;P&gt;&amp;nbsp; if(callingNumberOffice1) &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then&lt;/P&gt;&lt;P&gt;&amp;nbsp; msg:removeHeader ("Diversion") &lt;/P&gt;&lt;P&gt;&amp;nbsp; --removing diversion header in case it already exists&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msg:addHeader("Diversion", addDiversionOffice1)&lt;/P&gt;&lt;P&gt;&amp;nbsp; --adding new diversion header back to call&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elseif(callingNumberOffice2) &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then&lt;/P&gt;&lt;P&gt;&amp;nbsp; msg:removeHeader ("Diversion")&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msg:addHeader("Diversion", addDiversionOffice2) &lt;/P&gt;&lt;P&gt;&amp;nbsp; elseif(callingNumberOffice3) &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then&lt;/P&gt;&lt;P&gt;&amp;nbsp; msg:removeHeader ("Diversion")&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msg:addHeader("Diversion", addDiversionOffice3) &lt;/P&gt;&lt;P&gt;&amp;nbsp; else --apply default diversion header&lt;/P&gt;&lt;P&gt;&amp;nbsp; msg:removeHeader ("Diversion")&lt;/P&gt;&lt;P&gt;&amp;nbsp; msg:addHeader ("Diversion", addDiversionDefault)&lt;/P&gt;&lt;P&gt;&amp;nbsp; end&lt;/P&gt;&lt;P&gt;&amp;nbsp; end&lt;/P&gt;&lt;P&gt;end&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;return M&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The problem is that with the full script, there are 50 different offices and 50 different if/then statements.&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Does anyone know of a way to make this simpler or more efficient?&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I see this &lt;A href="http://lua-users.org/wiki/SwitchStatement" title="http://lua-users.org/wiki/SwitchStatement"&gt;lua-users wiki: Switch Statement&lt;/A&gt; page gives some info on how to do it with a lookup table, but I can't figure out how they corresponds to what i'm trying to do.&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any help please?&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Apr 2017 15:34:09 GMT</pubDate>
      <guid>https://community.cisco.com/t5/call-control/sip-normalization-script-to-add-diversion-header-based-on/m-p/3525269#M1423</guid>
      <dc:creator>nickwarfield</dc:creator>
      <dc:date>2017-04-20T15:34:09Z</dc:date>
    </item>
    <item>
      <title>Re: SIP Normalization Script to Add Diversion Header Based on Calling Number</title>
      <link>https://community.cisco.com/t5/call-control/sip-normalization-script-to-add-diversion-header-based-on/m-p/3525270#M1424</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Not a Lua expert by any means, but it appears the trick would be to parse out the DN from the From header, and use it with a lookup table.&amp;nbsp; Something like:&lt;/P&gt;&lt;PRE __default_attr="java" __jive_macro_name="code" class="jive_text_macro jive_macro_code _jivemacro_uid_1492707060366714" jivemacro_uid="_1492707060366714"&gt;
&lt;P&gt;lookup = {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ["202555"] = "&amp;lt;sip:2025551212@10.10.10.10&amp;gt;",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ["302555"] = "&amp;lt;sip:3025551212@10.10.10.10&amp;gt;",&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ["402555"] = "&amp;lt;sip:4025551212@10.10.10.10&amp;gt;"&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;testFromString = '"Joe" &amp;lt;sip:3025551234@5.5.5.45&amp;gt;;tag=001795f9d7d300080dd06ac1-fdc37874' &lt;/P&gt;
&lt;P&gt;dummy,userStart = string.find(testFromString, "sip:")&lt;/P&gt;
&lt;P&gt;areaExchange = string.sub(testFromString, userStart+1, userStart+6)&lt;/P&gt;
&lt;P&gt;print(areaExchange)&lt;/P&gt;
&lt;P&gt;diversion = lookup[areaExchange]&lt;/P&gt;
&lt;P&gt;print(diversion)&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;which gives:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;302555&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;lt;sip:3025551212@10.10.10.10&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Apr 2017 16:52:44 GMT</pubDate>
      <guid>https://community.cisco.com/t5/call-control/sip-normalization-script-to-add-diversion-header-based-on/m-p/3525270#M1424</guid>
      <dc:creator>dstaudt</dc:creator>
      <dc:date>2017-04-20T16:52:44Z</dc:date>
    </item>
    <item>
      <title>Re: SIP Normalization Script to Add Diversion Header Based on Calling Number</title>
      <link>https://community.cisco.com/t5/call-control/sip-normalization-script-to-add-diversion-header-based-on/m-p/3525271#M1425</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks!&amp;nbsp; that was a big help!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is what I have after the info you gave me:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="_jivemacro_uid_1492713309902768 jive_text_macro jive_macro_code" jivemacro_uid="_1492713309902768" modifiedtitle="true"&gt;
&lt;P&gt;M = {}&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;--change to trace.enable() to have trace output in SDI&lt;/P&gt;
&lt;P&gt;--trace.disable()&amp;nbsp; &lt;/P&gt;
&lt;P&gt;trace.enable()&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;local addDiversionDefault = "&amp;lt;sip:4105551212@10.10.10.10&amp;gt;" &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;lookup = {&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ["410555"] = "&amp;lt;sip:4105551212@10.10.10.10&amp;gt;",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ["202555"] = "&amp;lt;sip:2025551212@10.10.10.10&amp;gt;",&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ["212555"] = "&amp;lt;sip:2125551212@10.10.10.10&amp;gt;"&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;function M.outbound_INVITE(msg) &lt;/P&gt;
&lt;P&gt;--specifies function only for outbound invites&lt;/P&gt;
&lt;P&gt;&amp;nbsp; local calledNumber = msg:getHeader ("To") &lt;/P&gt;
&lt;P&gt;&amp;nbsp; --get To header to determine called number&lt;/P&gt;
&lt;P&gt;&amp;nbsp; local emergencyCall = string.find (calledNumber, "sip:911@") &lt;/P&gt;
&lt;P&gt;&amp;nbsp; --search for 911 in called number&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if emergencyCall == nil&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then&lt;/P&gt;
&lt;P&gt;&amp;nbsp; local callingNumber = msg:getHeader ("From") &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dummy,userStart = string.find(callingNumber, "sip:")&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; areaExchange = string.sub(callingNumber, userStart+1, userStart+6)&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; --parsing area code and exchange from calling number&lt;/P&gt;
&lt;P&gt;&amp;nbsp; diversion = lookup[areaExchange]&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp; --looking up diversion header based on area code and exchange &lt;/P&gt;
&lt;P&gt;&amp;nbsp; msg:removeHeader ("Diversion") &lt;/P&gt;
&lt;P&gt;&amp;nbsp; --removing diversion header in case it already exists&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msg:addHeader("Diversion", diversion)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --adding new diversion header back to call&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if diversion == nil&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then msg:addHeader ("Diversion", addDiversionDefault)&lt;/P&gt;
&lt;P&gt;&amp;nbsp; end&lt;/P&gt;
&lt;P&gt;&amp;nbsp; end&lt;/P&gt;
&lt;P&gt;end&lt;/P&gt;
&lt;P&gt;return M&lt;/P&gt;
&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It seems to work from what I've tested.&amp;nbsp; I really appreciate your help.&amp;nbsp; Do you see anything that could be done better or might cause any issues? &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Apr 2017 18:38:28 GMT</pubDate>
      <guid>https://community.cisco.com/t5/call-control/sip-normalization-script-to-add-diversion-header-based-on/m-p/3525271#M1425</guid>
      <dc:creator>nickwarfield</dc:creator>
      <dc:date>2017-04-20T18:38:28Z</dc:date>
    </item>
    <item>
      <title>Re: SIP Normalization Script to Add Diversion Header Based on Calling Number</title>
      <link>https://community.cisco.com/t5/call-control/sip-normalization-script-to-add-diversion-header-based-on/m-p/3525272#M1426</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have the requirement to add a diversion header to messages directed towards Exchange CAS and UM servers.&amp;nbsp;&amp;nbsp; We have a scenario where users call the VM pilot (CAS) from a device that does not have VM and they continue to get ringback from exchange after they enter their VM box number to identify themselves.&amp;nbsp; The DTMF is valid.&amp;nbsp; TAC has advised that the system does not understand how to direct the call as their is no Diversion header.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Specifically :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;"CUCM would not insert a Diversion header on this situations. Diversion header would be inserted if the party that is transferring the call has a DN assigned, SIP integration does not have this capability. To insert a Diversion header, we would have to do it using Normalization"&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;I think the SIP trunk from Exchange must not have a number assigned and so this fails.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;Can someone provide the framework for adding a diversion header so the call will complete? &lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;The specific log sequence is:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="p1"&gt;&lt;SPAN class="s1"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;11463721.001 |13:50:09.653 |AppInfo&amp;nbsp; |SIPTcp - wait_SdlSPISignal: Outgoing SIP TCP message to 10.167.128.202 on port 5067 index 146254&lt;/P&gt;&lt;P&gt;[2197798,NET]&lt;/P&gt;&lt;P&gt;SIP/2.0 202 Accepted&lt;/P&gt;&lt;P&gt;Via: SIP/2.0/TCP 10.167.128.202:5067;branch=z9hG4bK1781c77a&lt;/P&gt;&lt;P&gt;From: &amp;lt;sip:70001@10.167.128.102&amp;gt;;tag=fafd7cbaf2;epid=13CC005D1A&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;To: "Blue Berry" &amp;lt;sip:&lt;/SPAN&gt;&lt;A class="jive-link-email-small" href="mailto:9920400@hoc-lab-cdc.ca"&gt;9920400@hoc-lab-cdc.ca&lt;/A&gt;&lt;SPAN&gt;&amp;gt;;tag=844637~4166cdbc-a7d7-4923-9018-926776b31eb2-39132798&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Date: Wed, 12 Apr 2017 17:50:09 GMT&lt;/P&gt;&lt;P&gt;Call-ID: 6f407f80-8ee168c4-68a57-d06aa0a@10.170.6.13&amp;lt;mailto:6f407f80-8ee168c4-68a57-d06aa0a@10.170.6.13&amp;gt;&lt;/P&gt;&lt;P&gt;Server: Cisco-CUCM10.5&lt;/P&gt;&lt;P&gt;CSeq: 1 REFER&lt;/P&gt;&lt;P&gt;Contact: &amp;lt;sip:9920400@10.170.6.13:5060;transport=tcp&amp;gt;&lt;/P&gt;&lt;P&gt;Content-Length: 0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;11463802.001 |13:50:09.733 |AppInfo&amp;nbsp; |SIPD(48) - getKeyBasedOnCiAndBranch: AddressingElement branch is 0 and ci is 39132801&amp;nbsp; mapKey is 39132801&lt;/P&gt;&lt;P&gt;11463802.002 |13:50:09.733 |AppInfo&amp;nbsp; |SIPD(48) - getCdpcPidGivenKey: Did not find Cdpc Pid for mapKey 39132801&lt;/P&gt;&lt;P&gt;11463802.003 |13:50:09.733 |AppInfo&amp;nbsp; |resetLocalDtmfCaps: mLocalDtmfCaps.oob.kpmlAvail = 0&lt;/P&gt;&lt;P&gt;11463802.004 |13:50:09.733 |AppInfo&amp;nbsp; |CcmCcmdbSIPNormalizeHelper::getSipDeviceScriptPkidGivenDeviceName: This is a regular SIPTrunk. deviceName - (Exchange&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;11463827.010 |13:50:09.749 |AppInfo&amp;nbsp; |SIPCdpc(221) - getDefSetup: ReqURI is not present&lt;/P&gt;&lt;P&gt;11463827.011 |13:50:09.749 |AppInfo&amp;nbsp; |SIPCdpc(221) - getDefSetup: Relaying contact header parms from CC to siphandler = [;+u.sip!devicename.ccm.cisco.com="SEP382056446896"]&lt;/P&gt;&lt;P&gt;11463827.012 |13:50:09.749 |AppInfo&amp;nbsp; |SIPCdpc(221) - appendRPHdr: appendRPHdr - no RPHeader Network Domain set and not precedence call, return&lt;/P&gt;&lt;P&gt;11463827.013 |13:50:09.749 |AppInfo&amp;nbsp; |SIPCdpc(221) - appendGuidHeader: adding Guid to sipContainerWrapper: 7700240000010000000000360D06AA0A&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;++++Not able to add Diversion Header&lt;/P&gt;&lt;P&gt;11463827.014 |13:50:09.749 |AppInfo&amp;nbsp; |SIPCdpc(221) - getRedirectingNumIE: Not adding any Voice mail Diversion header as originalCdpnRedirectReason and lastRedirectingRedirectReason are&amp;nbsp; SS_RFR_REFER&lt;/P&gt;&lt;P&gt;11463827.015 |13:50:09.749 |AppInfo&amp;nbsp; |SIPCdpc(221) - getRedirectingNumIE: Redirect reasons: last: 130, orig: 130&lt;/P&gt;&lt;P&gt;11463827.016 |13:50:09.749 |AppInfo&amp;nbsp; |SIPCdpc(221) - CcPtyNumIdEq: Comparing @, dn: 70001, ti: DN with @, dn: 70001, ti: DN, result: true&lt;/P&gt;&lt;P&gt;11463827.017 |13:50:09.749 |AppInfo&amp;nbsp; |SIPCdpc(221) - CcPtyNumIdEq: Comparing @, dn: 70001, ti: DN with @, dn: 70001, ti: DN, result: true&lt;/P&gt;&lt;P&gt;11463827.018 |13:50:09.749 |AppInfo&amp;nbsp; |SIPCdpc(221) - addTransparencyInfo: attaching transparency object&lt;/P&gt;&lt;P&gt;11463827.019 |13:50:09.749 |AppInfo&amp;nbsp; |//SIP/Stack/Error/0x0/sipAppGetMessagePlatformDataOutbound: Invalid message platform data in the container&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;++++INVITE sent out without a diversion header:&lt;/P&gt;&lt;P&gt;11463727.001 |13:50:09.654 |AppInfo&amp;nbsp; |SIPTcp - wait_SdlSPISignal: Outgoing SIP TCP message to 10.148.73.12 on port 49544 index 132662&lt;/P&gt;&lt;P&gt;[2197800,NET]&lt;/P&gt;&lt;P&gt;INVITE sip:c2342852-1db0-1132-bdc9-1fa8d6215ef8@10.148.73.12:49544;transport=tcp SIP/2.0&lt;/P&gt;&lt;P&gt;Via: SIP/2.0/TCP 10.170.6.13:5060;branch=z9hG4bK68bf232c2b2bb&lt;/P&gt;&lt;P&gt;From: &amp;lt;sip:70001@10.170.6.13&amp;gt;;tag=844632~4166cdbc-a7d7-4923-9018-926776b31eb2-39132797&lt;/P&gt;&lt;P&gt;To: "Blue Berry" &amp;lt;sip:9920400@10.170.6.13&amp;gt;;tag=38205644689605e10a87b0b8-6c89bd79&lt;/P&gt;&lt;P&gt;Date: Wed, 12 Apr 2017 17:50:09 GMT&lt;/P&gt;&lt;P&gt;Call-ID: 38205644-68960010-03f43427-034b56a3@10.148.73.12&amp;lt;mailto:38205644-68960010-03f43427-034b56a3@10.148.73.12&amp;gt;&lt;/P&gt;&lt;P&gt;Supported: timer,resource-priority,replaces&lt;/P&gt;&lt;P&gt;User-Agent: Cisco-CUCM10.5&lt;/P&gt;&lt;P&gt;Allow: INVITE, OPTIONS, INFO, BYE, CANCEL, ACK, PRACK, UPDATE, REFER, SUBSCRIBE, NOTIFY&lt;/P&gt;&lt;P&gt;CSeq: 102 INVITE&lt;/P&gt;&lt;P&gt;Max-Forwards: 70&lt;/P&gt;&lt;P&gt;Expires: 180&lt;/P&gt;&lt;P&gt;Allow-Events: presence&lt;/P&gt;&lt;P&gt;Call-Info: &amp;lt;urn:x-cisco-remotecc:callinfo&amp;gt;; security= NotAuthenticated; orientation= to; gci= 2-21107; isVoip; call-instance= 1&lt;/P&gt;&lt;P&gt;Min-SE:&amp;nbsp; 1800&lt;/P&gt;&lt;P&gt;Remote-Party-ID: &amp;lt;sip:70001@10.170.6.13&amp;gt;;party=calling;screen=yes;privacy=off&lt;/P&gt;&lt;P&gt;Contact: &amp;lt;sip:70001@10.170.6.13:5060;transport=tcp&amp;gt;;automata;text;audio;image&lt;/P&gt;&lt;P&gt;Content-Type: application/sdp&lt;/P&gt;&lt;P&gt;Content-Length: 243&lt;/P&gt;&lt;P&gt;v=0&lt;/P&gt;&lt;P&gt;o=CiscoSystemsCCM-SIP 844632 2 IN IP4 10.170.6.13&lt;/P&gt;&lt;P&gt;s=SIP Call&lt;/P&gt;&lt;P&gt;c=IN IP4 0.0.0.0&lt;/P&gt;&lt;P&gt;b=AS:64&lt;/P&gt;&lt;P&gt;t=0 0&lt;/P&gt;&lt;P&gt;m=audio 25716 RTP/AVP 0 101&lt;/P&gt;&lt;P&gt;b=TIAS:64000&lt;/P&gt;&lt;P&gt;a=ptime:20&lt;/P&gt;&lt;P&gt;a=rtpmap:0 PCMU/8000&lt;/P&gt;&lt;P&gt;a=inactive&lt;/P&gt;&lt;P&gt;a=rtpmap:101 telephone-event/8000&lt;/P&gt;&lt;P&gt;a=fmtp:101 0-15&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Jim&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 03 May 2017 03:33:37 GMT</pubDate>
      <guid>https://community.cisco.com/t5/call-control/sip-normalization-script-to-add-diversion-header-based-on/m-p/3525272#M1426</guid>
      <dc:creator>jfladouceur</dc:creator>
      <dc:date>2017-05-03T03:33:37Z</dc:date>
    </item>
    <item>
      <title>Re: SIP Normalization Script to Add Diversion Header Based on Calling Number</title>
      <link>https://community.cisco.com/t5/call-control/sip-normalization-script-to-add-diversion-header-based-on/m-p/3525273#M1427</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This sounds like it'll be tricky since it sounds like you only want a diversion header added onto certain calls, correct?&amp;nbsp; What aspect of these calls would you want to base the diversion header off of?&amp;nbsp; It's not complicated to add a diversion header to a call, but you have to understand the affect it's going to have on the call itself.&amp;nbsp; In my scenario, these were calls out to the PSTN, where Verizon needed a diversion header to bill us properly because of a feature we had enabled.&amp;nbsp; Verizon doesn't use a diversion header for any other reason.&amp;nbsp; Voicemail systems DO use diversion headers to determine what voicemail box to send the caller to.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It also sounds like Cisco TAC has told you what they &lt;EM&gt;think&lt;/EM&gt; the Microsoft UM expects to see.&amp;nbsp; Is that correct or did you hear from Microsoft for sure that they're expecting a diversion header?&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;Is this a forwarded call on CUCM that is being forwarded to the VM pilot?&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333px;"&gt;It sounds almost as if you're just trying to dial the voicemail pilot directly from an extension that does not have a voicemail box, like a public space phone, and the user who is dialing it is trying to login to their own mailbox.&amp;nbsp; &lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm not familiar with Exchange CAS/UM, but I can't imagine a scenario where a diversion header would be required just to dial a voicemail pilot directly.&amp;nbsp; Typically a diversion header is used to identify where the call has been diverted from.&amp;nbsp; For example, in Cisco Unity Connection, extension 2000 dialing extension 2001 will get forwarded to the VM pilot which is 2500, and the diversion header on the forwarded call will be 2001, and Unity Connection knows to drop that call into the Voicemail greeting for 2001. If you just dial the VM pilot without being forwarded to it, you get a generic "Hello, Cisco Unity Messaging.." greeting asking you to dial a number or you can press * to login.&amp;nbsp; If you add a diversion header onto a call directly from a phone to a voicemail pilot in Unity Connection, you will get the greeting for the extension listed in the diversion header.&amp;nbsp; I would think the same thing would occur for Exchange UM.&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If i'm understanding your issue correctly, maybe there is a way to configure a voicemail access number that users can dial into to login to voicemail instead of using the pilot number?&amp;nbsp; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 03 May 2017 18:19:37 GMT</pubDate>
      <guid>https://community.cisco.com/t5/call-control/sip-normalization-script-to-add-diversion-header-based-on/m-p/3525273#M1427</guid>
      <dc:creator>nickwarfield</dc:creator>
      <dc:date>2017-05-03T18:19:37Z</dc:date>
    </item>
    <item>
      <title>Re: SIP Normalization Script to Add Diversion Header Based on Calling Number</title>
      <link>https://community.cisco.com/t5/call-control/sip-normalization-script-to-add-diversion-header-based-on/m-p/3525274#M1428</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Well, you can always check for the existence (or lack thereof) of any particular header and add if they don't exist...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="plain" __jive_macro_name="code" class="_jivemacro_uid_14938379868441446 jive_text_macro jive_macro_code" jivemacro_uid="_14938379868441446" modifiedtitle="true"&gt;
&lt;P&gt;M = {}&lt;/P&gt;
&lt;P&gt;function M.outbound_INVITE(msg)&lt;/P&gt;
&lt;P&gt;&amp;nbsp; local diversHeader = msg:getHeader("Diversion")&lt;/P&gt;
&lt;P&gt;&amp;nbsp; if not diversHeader&lt;/P&gt;
&lt;P&gt;&amp;nbsp; then&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Add a new diversion header&lt;/P&gt;
&lt;P&gt;&amp;nbsp; end&lt;/P&gt;
&lt;P&gt;end&lt;/P&gt;
&lt;P&gt;return M&lt;/P&gt;
&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 03 May 2017 19:07:34 GMT</pubDate>
      <guid>https://community.cisco.com/t5/call-control/sip-normalization-script-to-add-diversion-header-based-on/m-p/3525274#M1428</guid>
      <dc:creator>Mark Stover</dc:creator>
      <dc:date>2017-05-03T19:07:34Z</dc:date>
    </item>
    <item>
      <title>Re: SIP Normalization Script to Add Diversion Header Based on Calling Number</title>
      <link>https://community.cisco.com/t5/call-control/sip-normalization-script-to-add-diversion-header-based-on/m-p/3525275#M1429</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks -&amp;nbsp; as it turns out in release 11.5 of CUCM the issue is resolved. I will grab some traces to see what has changed.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;cheers&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 08 May 2017 17:06:38 GMT</pubDate>
      <guid>https://community.cisco.com/t5/call-control/sip-normalization-script-to-add-diversion-header-based-on/m-p/3525275#M1429</guid>
      <dc:creator>Jim.Phillipps</dc:creator>
      <dc:date>2017-05-08T17:06:38Z</dc:date>
    </item>
    <item>
      <title>Re: SIP Normalization Script to Add Diversion Header Based on Calling Number</title>
      <link>https://community.cisco.com/t5/call-control/sip-normalization-script-to-add-diversion-header-based-on/m-p/3525276#M1430</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;So does this only apply to 911 calls? or will this work for any number?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Oct 2017 19:24:04 GMT</pubDate>
      <guid>https://community.cisco.com/t5/call-control/sip-normalization-script-to-add-diversion-header-based-on/m-p/3525276#M1430</guid>
      <dc:creator>jpatnode@carouselindustries.co</dc:creator>
      <dc:date>2017-10-18T19:24:04Z</dc:date>
    </item>
    <item>
      <title>Re: SIP Normalization Script to Add Diversion Header Based on Calling Number</title>
      <link>https://community.cisco.com/t5/call-control/sip-normalization-script-to-add-diversion-header-based-on/m-p/3525277#M1431</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I believe the logic is looking for 911 calls, and then 'not' changing anything if it is a 911 call. So, it's only making changes if the sip:911@ is 'nil'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 Oct 2017 12:07:23 GMT</pubDate>
      <guid>https://community.cisco.com/t5/call-control/sip-normalization-script-to-add-diversion-header-based-on/m-p/3525277#M1431</guid>
      <dc:creator>Mark Stover</dc:creator>
      <dc:date>2017-10-19T12:07:23Z</dc:date>
    </item>
    <item>
      <title>Re: SIP Normalization Script to Add Diversion Header Based on Calling Number</title>
      <link>https://community.cisco.com/t5/call-control/sip-normalization-script-to-add-diversion-header-based-on/m-p/3525278#M1432</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;So what if i always wanted to set a diversion header based o nthe calling number? And what if the range of number varies, so i cant count on area code and exchange or i have to use more digits to detemine my diversion header.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;See below for examples i know ill have to change the "userstart +6" but to what?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;and how would i remove the check for 911?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;is htere a limit on the number of search items? &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;OL class="dp-cpp" start="1"&gt;&lt;LI&gt;M = {}&amp;nbsp; &lt;/LI&gt;&lt;LI&gt;&amp;nbsp; &lt;/LI&gt;&lt;LI&gt;&amp;nbsp; &lt;/LI&gt;&lt;LI&gt;--change to trace.enable() to have trace output in SDI&amp;nbsp; &lt;/LI&gt;&lt;LI&gt;--trace.disable()&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/LI&gt;&lt;LI&gt;trace.enable()&amp;nbsp; &lt;/LI&gt;&lt;LI&gt;&amp;nbsp; &lt;/LI&gt;&lt;LI&gt;&amp;nbsp; &lt;/LI&gt;&lt;LI&gt;local addDiversionDefault = &lt;SPAN class="string"&gt;"&amp;lt;sip:4105551212@10.10.10.10&amp;gt;"&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&amp;nbsp; &lt;/LI&gt;&lt;LI&gt;&amp;nbsp; &lt;/LI&gt;&lt;LI&gt;lookup = {&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/LI&gt;&lt;LI&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;SPAN class="string"&gt;"410"] = &lt;SPAN class="string"&gt;"&amp;lt;sip:4105551212@10.10.10.10&amp;gt;"&lt;/SPAN&gt;,&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;SPAN class="string"&gt;"202555"] = &lt;SPAN class="string"&gt;"&amp;lt;sip:2025551212@10.10.10.10&amp;gt;"&lt;/SPAN&gt;,&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;SPAN class="string"&gt;"21255512"] = &lt;SPAN class="string"&gt;"&amp;lt;sip:2125551212@10.10.10.10&amp;gt;"&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/LI&gt;&lt;LI&gt;&amp;nbsp; &lt;/LI&gt;&lt;LI&gt;&amp;nbsp; &lt;/LI&gt;&lt;LI&gt;function M.outbound_INVITE(msg)&amp;nbsp;&amp;nbsp; &lt;/LI&gt;&lt;LI&gt;--specifies function only &lt;SPAN class="keyword"&gt;for outbound invites&amp;nbsp; &lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&amp;nbsp; local calledNumber = msg:getHeader (&lt;SPAN class="string"&gt;"To")&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&amp;nbsp; --get To header to determine called number&amp;nbsp; &lt;/LI&gt;&lt;LI&gt;&amp;nbsp; local emergencyCall = string.find (calledNumber, &lt;SPAN class="string"&gt;"sip:911@")&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&amp;nbsp; --search &lt;SPAN class="keyword"&gt;for &lt;SPAN class="number"&gt;911&lt;/SPAN&gt; in called number&amp;nbsp; &lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&amp;nbsp; &lt;SPAN class="keyword"&gt;if emergencyCall == nil&amp;nbsp; &lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then&amp;nbsp; &lt;/LI&gt;&lt;LI&gt;&amp;nbsp; local callingNumber = msg:getHeader (&lt;SPAN class="string"&gt;"From")&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dummy,userStart = string.find(callingNumber, &lt;SPAN class="string"&gt;"sip:")&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; areaExchange = string.sub(callingNumber, userStart+&lt;SPAN class="number"&gt;1, &lt;STRONG&gt;&lt;EM&gt;userStart+&lt;/EM&gt;&lt;/STRONG&gt;&lt;SPAN class="number"&gt;&lt;STRONG&gt;&lt;EM&gt;6&lt;/EM&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;)&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&amp;nbsp; --parsing area code and exchange from calling number&amp;nbsp; &lt;/LI&gt;&lt;LI&gt;&amp;nbsp; diversion = lookup[areaExchange]&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/LI&gt;&lt;LI&gt;&amp;nbsp; --looking up diversion header based on area code and exchange&amp;nbsp;&amp;nbsp; &lt;/LI&gt;&lt;LI&gt;&amp;nbsp; msg:removeHeader (&lt;SPAN class="string"&gt;"Diversion")&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&amp;nbsp; --removing diversion header in &lt;SPAN class="keyword"&gt;case it already exists&amp;nbsp; &lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msg:addHeader(&lt;SPAN class="string"&gt;"Diversion", diversion)&amp;nbsp; &lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --adding &lt;SPAN class="keyword"&gt;new diversion header back to call&amp;nbsp; &lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&amp;nbsp; &lt;SPAN class="keyword"&gt;if diversion == nil&amp;nbsp; &lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; then msg:addHeader (&lt;SPAN class="string"&gt;"Diversion", addDiversionDefault)&amp;nbsp; &lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&amp;nbsp; end&amp;nbsp; &lt;/LI&gt;&lt;LI&gt;&amp;nbsp; end&amp;nbsp; &lt;/LI&gt;&lt;LI&gt;end&amp;nbsp; &lt;/LI&gt;&lt;LI&gt;&lt;SPAN class="keyword"&gt;return M&amp;nbsp; &lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 31 Oct 2017 02:55:00 GMT</pubDate>
      <guid>https://community.cisco.com/t5/call-control/sip-normalization-script-to-add-diversion-header-based-on/m-p/3525278#M1432</guid>
      <dc:creator>jpatnode@carouselindustries.co</dc:creator>
      <dc:date>2017-10-31T02:55:00Z</dc:date>
    </item>
    <item>
      <title>Re: SIP Normalization Script to Add Diversion Header Based on Calling Number</title>
      <link>https://community.cisco.com/t5/call-control/sip-normalization-script-to-add-diversion-header-based-on/m-p/3525279#M1433</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi James,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I had an email exchange with John V. about this. Can you chat with him? I can help you out, but I need a better idea what you're trying to accomplish.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 31 Oct 2017 11:54:22 GMT</pubDate>
      <guid>https://community.cisco.com/t5/call-control/sip-normalization-script-to-add-diversion-header-based-on/m-p/3525279#M1433</guid>
      <dc:creator>Mark Stover</dc:creator>
      <dc:date>2017-10-31T11:54:22Z</dc:date>
    </item>
  </channel>
</rss>

