<?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 XML Application in Collaboration Applications</title>
    <link>https://community.cisco.com/t5/collaboration-applications/xml-application/m-p/5310623#M51133</link>
    <description>&lt;P&gt;Hello dear Community,&lt;/P&gt;&lt;P&gt;I'm working on a &lt;STRONG&gt;Cisco XML application&lt;/STRONG&gt; for my &lt;STRONG&gt;Cisco 8851 phone with SIP firmware&lt;/STRONG&gt; and I'm running into some persistent issues. My goal is to create a simple application that displays an "On" or "Off" status, and when selected, shows a confirmation as a banner. Ideally, after that, I'd like to jump directly to Key:Applications, but I'm having trouble with the phone's history.&lt;/P&gt;&lt;HR /&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;H3&gt;My Current Setup and Problem&lt;/H3&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm using Flask as a backend to generate the XML objects. I want to create a list with two entries ("On" and "Off") that each display a suitable icon (e.g., On.png / Off.png) depending on the current active status.&lt;/P&gt;&lt;P&gt;When a user selects "On" or "Off", the following should happen:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;P&gt;The setting is saved in the backend.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;A &lt;STRONG&gt;status banner&lt;/STRONG&gt; (short message "Mode: On/Off") should be displayed as an overlay on the phone.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Afterward, I ideally want to &lt;STRONG&gt;jump directly to the phone's main applications menu&lt;/STRONG&gt; (Key:Applications).&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;The main problem is that I consistently receive an &lt;STRONG&gt;"XML Error [4]: Parse Error"&lt;/STRONG&gt; on the phone whenever I try to send a banner (using CiscoIPPhoneStatus or CiscoIPPhoneStatusFile) in conjunction with a navigation command (CiscoIPPhoneExecute). Even if the XML looks well-formed in the browser, the phone doesn't seem to support this combination.&lt;/P&gt;&lt;P&gt;In addition, when I jump to Key:Applications, my application often remains in the phone's history, so pressing the hardkey "Back" brings me back to my application. I want the application to be completely removed from the history when I jump to Key:Applications, so that the next press of the hardkey "Back" returns me to the phone's idle screen.&lt;/P&gt;&lt;HR /&gt;&lt;P&gt;Here is the relevant code I'm currently using (simplified):&lt;/P&gt;&lt;PRE&gt;# Route for the mode menu
@blueprint.route('/services/noise-reduction/mode')
def noise_reduction_mode():
    current_mode, _ = read_noise_reduction_config()
    on_icon_url = request.url_root + 'Ein.png'
    off_icon_url = request.url_root + 'Aus.png'

    xml = '&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;' \
        '&amp;lt;CiscoIPPhoneIconFileMenu&amp;gt;' \
          '&amp;lt;Title&amp;gt;Mode&amp;lt;/Title&amp;gt;' \
          '&amp;lt;IconItem&amp;gt;' \
            '&amp;lt;Index&amp;gt;0&amp;lt;/Index&amp;gt;' \
            '&amp;lt;URL&amp;gt;' + on_icon_url + '&amp;lt;/URL&amp;gt;' \
          '&amp;lt;/IconItem&amp;gt;' \
          '&amp;lt;IconItem&amp;gt;' \
            '&amp;lt;Index&amp;gt;1&amp;lt;/Index&amp;gt;' \
            '&amp;lt;URL&amp;gt;' + off_icon_url + '&amp;lt;/URL&amp;gt;' \
          '&amp;lt;/IconItem&amp;gt;' \
          '&amp;lt;MenuItem&amp;gt;' \
            '&amp;lt;Name&amp;gt;On&amp;lt;/Name&amp;gt;' \
            '&amp;lt;URL&amp;gt;' + request.url_root + 'services/noise-reduction/process-mode-set?value=on&amp;lt;/URL&amp;gt;'
    if current_mode == "on":
        xml += '&amp;lt;IconIndex&amp;gt;0&amp;lt;/IconIndex&amp;gt;'
        xml += '&amp;lt;Selected&amp;gt;true&amp;lt;/Selected&amp;gt;'
    else:
        xml += '&amp;lt;IconIndex&amp;gt;1&amp;lt;/IconIndex&amp;gt;'
    xml += '&amp;lt;/MenuItem&amp;gt;' \
          '&amp;lt;MenuItem&amp;gt;' \
            '&amp;lt;Name&amp;gt;Off&amp;lt;/Name&amp;gt;' \
            '&amp;lt;URL&amp;gt;' + request.url_root + 'services/noise-reduction/process-mode-set?value=off&amp;lt;/URL&amp;gt;'
    if current_mode == "off":
        xml += '&amp;lt;IconIndex&amp;gt;0&amp;lt;/IconIndex&amp;gt;'
        xml += '&amp;lt;Selected&amp;gt;true&amp;lt;/Selected&amp;gt;'
    else:
        xml += '&amp;lt;IconIndex&amp;gt;1&amp;lt;/IconIndex&amp;gt;'
    xml += '&amp;lt;/MenuItem&amp;gt;' \
          '&amp;lt;SoftKeyItem&amp;gt;' \
            '&amp;lt;Name&amp;gt;Back&amp;lt;/Name&amp;gt;' \
            '&amp;lt;Position&amp;gt;' + ('3' if g.is_79xx else '1') + '&amp;lt;/Position&amp;gt;' \
            '&amp;lt;URL&amp;gt;' + request.url_root + 'services/noise-reduction&amp;lt;/URL&amp;gt;' \
          '&amp;lt;/SoftKeyItem&amp;gt;' \
          '&amp;lt;SoftKeyItem&amp;gt;' \
            '&amp;lt;Name&amp;gt;Select&amp;lt;/Name&amp;gt;' \
            '&amp;lt;Position&amp;gt;' + ('1' if g.is_79xx else '2') + '&amp;lt;/Position&amp;gt;' \
            '&amp;lt;URL&amp;gt;SoftKey:Select&amp;lt;/URL&amp;gt;' \
          '&amp;lt;/SoftKeyItem&amp;gt;' \
        '&amp;lt;/CiscoIPPhoneIconFileMenu&amp;gt;'
    return Response(xml, mimetype = 'text/xml'), 200

# Process route for saving and navigating (causes parse error)
@blueprint.route('/services/noise-reduction/process-mode-set')
def process_noise_reduction_mode_set():
    mode_value = request.args.get('value')
    if mode_value in ["on", "off"]:
        # ... (save logic) ...
        print(f"Noise reduction mode set to: {mode_value}.")

    # Attempt to display a banner and then navigate - leads to parse error
    # The combination of CiscoIPPhoneStatus/File and a navigation URL in a CiscoIPPhoneExecute
    # does not seem to be allowed ("only one URL and two URIs per CiscoIPPhoneExecute").
    # Even a nested solution with intermediate pages led to errors.
    xml = '&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;' \
          '&amp;lt;CiscoIPPhoneExecute&amp;gt;' \
            '&amp;lt;ExecuteItem URL="SoftKey:Exit"/&amp;gt;' \
            '&amp;lt;ExecuteItem URL="Key:Applications"/&amp;gt;' \
          '&amp;lt;/CiscoIPPhoneExecute&amp;gt;' # This specific code also triggered the "parse error" for me.
                                   # Even trying to send only Key:Applications resulted in an error.
                                   # Only SoftKey:Exit works, but that's not the goal.
    return Response(xml, mimetype = 'text/xml'), 200&lt;/PRE&gt;&lt;H3&gt;My Questions for the Community&lt;/H3&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;P&gt;Is there a &lt;STRONG&gt;reliable method&lt;/STRONG&gt; to display a &lt;STRONG&gt;status banner&lt;/STRONG&gt; (similar to the CiscoIPPhoneStatus / CiscoIPPhoneStatusFile object) on a Cisco 8851 phone with SIP firmware without getting an "XML Error [4]: Parse Error"? Do I need a specific firmware version for this, or should I use a different XML object?&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;After saving the setting (and ideally displaying the banner), how can I &lt;STRONG&gt;jump directly to Key:Applications&lt;/STRONG&gt; while ensuring that my application is &lt;STRONG&gt;completely removed from the phone's hardkey history&lt;/STRONG&gt;? The goal is that the next press of the phone's physical "Back" button does not lead back to my application, but to the phone's idle screen. SoftKey:Exit followed by Key:Applications leads to errors or an uncleared history for me.&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;I'm grateful for any tips and experiences, especially from those who have successfully implemented complex XML interactions on Cisco 8851 phones!&lt;/P&gt;&lt;P&gt;Thank you in advance!&lt;/P&gt;</description>
    <pubDate>Thu, 17 Jul 2025 13:03:46 GMT</pubDate>
    <dc:creator>Cisco57</dc:creator>
    <dc:date>2025-07-17T13:03:46Z</dc:date>
    <item>
      <title>XML Application</title>
      <link>https://community.cisco.com/t5/collaboration-applications/xml-application/m-p/5310623#M51133</link>
      <description>&lt;P&gt;Hello dear Community,&lt;/P&gt;&lt;P&gt;I'm working on a &lt;STRONG&gt;Cisco XML application&lt;/STRONG&gt; for my &lt;STRONG&gt;Cisco 8851 phone with SIP firmware&lt;/STRONG&gt; and I'm running into some persistent issues. My goal is to create a simple application that displays an "On" or "Off" status, and when selected, shows a confirmation as a banner. Ideally, after that, I'd like to jump directly to Key:Applications, but I'm having trouble with the phone's history.&lt;/P&gt;&lt;HR /&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;H3&gt;My Current Setup and Problem&lt;/H3&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm using Flask as a backend to generate the XML objects. I want to create a list with two entries ("On" and "Off") that each display a suitable icon (e.g., On.png / Off.png) depending on the current active status.&lt;/P&gt;&lt;P&gt;When a user selects "On" or "Off", the following should happen:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;P&gt;The setting is saved in the backend.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;A &lt;STRONG&gt;status banner&lt;/STRONG&gt; (short message "Mode: On/Off") should be displayed as an overlay on the phone.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Afterward, I ideally want to &lt;STRONG&gt;jump directly to the phone's main applications menu&lt;/STRONG&gt; (Key:Applications).&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;The main problem is that I consistently receive an &lt;STRONG&gt;"XML Error [4]: Parse Error"&lt;/STRONG&gt; on the phone whenever I try to send a banner (using CiscoIPPhoneStatus or CiscoIPPhoneStatusFile) in conjunction with a navigation command (CiscoIPPhoneExecute). Even if the XML looks well-formed in the browser, the phone doesn't seem to support this combination.&lt;/P&gt;&lt;P&gt;In addition, when I jump to Key:Applications, my application often remains in the phone's history, so pressing the hardkey "Back" brings me back to my application. I want the application to be completely removed from the history when I jump to Key:Applications, so that the next press of the hardkey "Back" returns me to the phone's idle screen.&lt;/P&gt;&lt;HR /&gt;&lt;P&gt;Here is the relevant code I'm currently using (simplified):&lt;/P&gt;&lt;PRE&gt;# Route for the mode menu
@blueprint.route('/services/noise-reduction/mode')
def noise_reduction_mode():
    current_mode, _ = read_noise_reduction_config()
    on_icon_url = request.url_root + 'Ein.png'
    off_icon_url = request.url_root + 'Aus.png'

    xml = '&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;' \
        '&amp;lt;CiscoIPPhoneIconFileMenu&amp;gt;' \
          '&amp;lt;Title&amp;gt;Mode&amp;lt;/Title&amp;gt;' \
          '&amp;lt;IconItem&amp;gt;' \
            '&amp;lt;Index&amp;gt;0&amp;lt;/Index&amp;gt;' \
            '&amp;lt;URL&amp;gt;' + on_icon_url + '&amp;lt;/URL&amp;gt;' \
          '&amp;lt;/IconItem&amp;gt;' \
          '&amp;lt;IconItem&amp;gt;' \
            '&amp;lt;Index&amp;gt;1&amp;lt;/Index&amp;gt;' \
            '&amp;lt;URL&amp;gt;' + off_icon_url + '&amp;lt;/URL&amp;gt;' \
          '&amp;lt;/IconItem&amp;gt;' \
          '&amp;lt;MenuItem&amp;gt;' \
            '&amp;lt;Name&amp;gt;On&amp;lt;/Name&amp;gt;' \
            '&amp;lt;URL&amp;gt;' + request.url_root + 'services/noise-reduction/process-mode-set?value=on&amp;lt;/URL&amp;gt;'
    if current_mode == "on":
        xml += '&amp;lt;IconIndex&amp;gt;0&amp;lt;/IconIndex&amp;gt;'
        xml += '&amp;lt;Selected&amp;gt;true&amp;lt;/Selected&amp;gt;'
    else:
        xml += '&amp;lt;IconIndex&amp;gt;1&amp;lt;/IconIndex&amp;gt;'
    xml += '&amp;lt;/MenuItem&amp;gt;' \
          '&amp;lt;MenuItem&amp;gt;' \
            '&amp;lt;Name&amp;gt;Off&amp;lt;/Name&amp;gt;' \
            '&amp;lt;URL&amp;gt;' + request.url_root + 'services/noise-reduction/process-mode-set?value=off&amp;lt;/URL&amp;gt;'
    if current_mode == "off":
        xml += '&amp;lt;IconIndex&amp;gt;0&amp;lt;/IconIndex&amp;gt;'
        xml += '&amp;lt;Selected&amp;gt;true&amp;lt;/Selected&amp;gt;'
    else:
        xml += '&amp;lt;IconIndex&amp;gt;1&amp;lt;/IconIndex&amp;gt;'
    xml += '&amp;lt;/MenuItem&amp;gt;' \
          '&amp;lt;SoftKeyItem&amp;gt;' \
            '&amp;lt;Name&amp;gt;Back&amp;lt;/Name&amp;gt;' \
            '&amp;lt;Position&amp;gt;' + ('3' if g.is_79xx else '1') + '&amp;lt;/Position&amp;gt;' \
            '&amp;lt;URL&amp;gt;' + request.url_root + 'services/noise-reduction&amp;lt;/URL&amp;gt;' \
          '&amp;lt;/SoftKeyItem&amp;gt;' \
          '&amp;lt;SoftKeyItem&amp;gt;' \
            '&amp;lt;Name&amp;gt;Select&amp;lt;/Name&amp;gt;' \
            '&amp;lt;Position&amp;gt;' + ('1' if g.is_79xx else '2') + '&amp;lt;/Position&amp;gt;' \
            '&amp;lt;URL&amp;gt;SoftKey:Select&amp;lt;/URL&amp;gt;' \
          '&amp;lt;/SoftKeyItem&amp;gt;' \
        '&amp;lt;/CiscoIPPhoneIconFileMenu&amp;gt;'
    return Response(xml, mimetype = 'text/xml'), 200

# Process route for saving and navigating (causes parse error)
@blueprint.route('/services/noise-reduction/process-mode-set')
def process_noise_reduction_mode_set():
    mode_value = request.args.get('value')
    if mode_value in ["on", "off"]:
        # ... (save logic) ...
        print(f"Noise reduction mode set to: {mode_value}.")

    # Attempt to display a banner and then navigate - leads to parse error
    # The combination of CiscoIPPhoneStatus/File and a navigation URL in a CiscoIPPhoneExecute
    # does not seem to be allowed ("only one URL and two URIs per CiscoIPPhoneExecute").
    # Even a nested solution with intermediate pages led to errors.
    xml = '&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;' \
          '&amp;lt;CiscoIPPhoneExecute&amp;gt;' \
            '&amp;lt;ExecuteItem URL="SoftKey:Exit"/&amp;gt;' \
            '&amp;lt;ExecuteItem URL="Key:Applications"/&amp;gt;' \
          '&amp;lt;/CiscoIPPhoneExecute&amp;gt;' # This specific code also triggered the "parse error" for me.
                                   # Even trying to send only Key:Applications resulted in an error.
                                   # Only SoftKey:Exit works, but that's not the goal.
    return Response(xml, mimetype = 'text/xml'), 200&lt;/PRE&gt;&lt;H3&gt;My Questions for the Community&lt;/H3&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;P&gt;Is there a &lt;STRONG&gt;reliable method&lt;/STRONG&gt; to display a &lt;STRONG&gt;status banner&lt;/STRONG&gt; (similar to the CiscoIPPhoneStatus / CiscoIPPhoneStatusFile object) on a Cisco 8851 phone with SIP firmware without getting an "XML Error [4]: Parse Error"? Do I need a specific firmware version for this, or should I use a different XML object?&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;After saving the setting (and ideally displaying the banner), how can I &lt;STRONG&gt;jump directly to Key:Applications&lt;/STRONG&gt; while ensuring that my application is &lt;STRONG&gt;completely removed from the phone's hardkey history&lt;/STRONG&gt;? The goal is that the next press of the phone's physical "Back" button does not lead back to my application, but to the phone's idle screen. SoftKey:Exit followed by Key:Applications leads to errors or an uncleared history for me.&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;I'm grateful for any tips and experiences, especially from those who have successfully implemented complex XML interactions on Cisco 8851 phones!&lt;/P&gt;&lt;P&gt;Thank you in advance!&lt;/P&gt;</description>
      <pubDate>Thu, 17 Jul 2025 13:03:46 GMT</pubDate>
      <guid>https://community.cisco.com/t5/collaboration-applications/xml-application/m-p/5310623#M51133</guid>
      <dc:creator>Cisco57</dc:creator>
      <dc:date>2025-07-17T13:03:46Z</dc:date>
    </item>
  </channel>
</rss>

