title: Can my bot server retrieve any information in the app manifest?
body: <p>I am adding a new static tab to an existing teams app.
  One of the new features is that the chat will publish a deep link to the static tab. This is creating a dilemna when I am contemplating deployment.</p>
  <p>Obviously I can’t put my entire application up here, but we can assume a situation like this:</p>
  <p>The manifest I have in production that is in the App Store looks like this:</p>
  <pre class="lang-json prettyprint-override"><code>{
      &quot;$schema&quot;: &quot;https://developer.microsoft.com/en-us/json-schemas/teams/v1.9/MicrosoftTeams.schema.json&quot;,
      &quot;manifestVersion&quot;: &quot;1.9&quot;,
      &quot;version&quot;: &quot;2.0.1&quot;,
      &quot;id&quot;: &quot;23232322-7676-4848-5555-44444444444&quot;,
      &quot;packageName&quot;: &quot;xxxxx&quot;,
      &quot;developer&quot;: {
          &quot;name&quot;: &quot;xxxxx&quot;,
          &quot;websiteUrl&quot;: &quot;https://www.xxxx.com/&quot;,
          &quot;privacyUrl&quot;: &quot;https://www.xxxx.com/legal/privacy&quot;,
          &quot;termsOfUseUrl&quot;: &quot;https://www.xxxxx.com/legal/privacy&quot;
      },
      &quot;icons&quot;: {
          &quot;color&quot;: &quot;color.png&quot;,
          &quot;outline&quot;: &quot;outline.png&quot;
      },
      &quot;name&quot;: {
          &quot;short&quot;: &quot;abra&quot;,
          &quot;full&quot;: &quot;abra cadabra&quot;
      },  
      &quot;description&quot;: {
          &quot;short&quot;: &quot;short&quot;,
          &quot;full&quot;: &quot;full&quot;
      },
      &quot;accentColor&quot;: &quot;#FFFFFF&quot;,
      &quot;bots&quot;: [
          {
              &quot;botId&quot;: &quot;11111111-2222-3333-4444-555555555555&quot;,
              &quot;scopes&quot;: [
                  &quot;personal&quot;
              ],
              &quot;commandLists&quot;: [
                  {
                      &quot;scopes&quot;: [
                          &quot;personal&quot;
                      ],
                      &quot;commands&quot;: [
                          {
                              &quot;title&quot;: &quot;Test&quot;,
                              &quot;description&quot;: &quot;Test&quot;
                          }
                      ]
                  }
              ],
              &quot;supportsFiles&quot;: false,
              &quot;isNotificationOnly&quot;: false
          }
      ],
      &quot;permissions&quot;: [
          &quot;identity&quot;,
          &quot;messageTeamMembers&quot;
      ],
      &quot;validDomains&quot;: [
          &quot;token.botframework.com&quot;,
          &quot;teams.microsoft.com&quot;,
          &quot;*.ngroc.io&quot;
      ]
  }
  </code></pre>
  <p>And in my bot in response to the “Test” command I return a simple text message, i.e.</p>
  <pre class="lang-js prettyprint-override"><code>return await step.prompt('textPrompt', { prompt: 'In the next version we will have a test tab' })
  </code></pre>
  <p>Now in development, I have added the following section to the manifest (after “bots”)</p>
  <pre class="lang-json prettyprint-override"><code>    &quot;staticTabs&quot;: [
          {
              &quot;entityId&quot;: &quot;conversations&quot;,
              &quot;scopes&quot;: [
                  &quot;personal&quot;
              ]
          },
          {
              &quot;entityId&quot;: &quot;testtab”,
              &quot;contentBotId&quot;: &quot;aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee&quot;,
              &quot;name&quot;: “Go To Test Tab&quot;,
              &quot;scopes&quot;: [ &quot;personal&quot; ]
          },
          {
              &quot;entityId&quot;: &quot;about&quot;,
              &quot;scopes&quot;: [
                  &quot;personal&quot;
              ]
          }
      ],
  </code></pre>
  <p>And I have updated the value of the version from 2.0.1 to 2.1.0</p>
  <p>Now, in response to the “Test” message I am returning an adaptiveCard that looks like this:</p>
  <pre class="lang-json prettyprint-override"><code>{
    type: 'AdaptiveCard',
    version: '1.3',
    body: [],
    actions: [
      {
        type: 'Action.OpenUrl',
        title: 'Go To Test Tab',
        url: ‘https://teams.microsoft.com/l/entity/23232322-7676-4848-5555-44444444444/testtab’
      }
    ]
  }
  </code></pre>
  <p>This works very nicely and when I press the “go to Test Tab” it opens up the test tab as desired.</p>
  <p>My problem is with deploying.
  If I submit my new manifest to the App Store, without updating my production server, those testing the new version will continue to get the message “In the next version we will have a test tab” and be missing the link to the new tab.</p>
  <p>If I update my production server now, before the update in the App Store, my current users will get the adaptive card with the button that will fail if they press it.</p>
  <p>Clearly, neither of these options are good.</p>
  <p>Ideally, my response should be something like:</p>
  <pre class="lang-js prettyprint-override"><code>If tabExists() {
    Return {… the adaptive card }
  Else {
     return await step.prompt('textPrompt', { prompt: 'In the next version we will have a ‘test tab })
  }
  </code></pre>
  <p>However, I don't know how to write &quot;tabExists()&quot; - I was thinking maybe there was some way to access the version number from the bot manifest, or the list of static tabs, and use that information, but I am happy for alternative suggestions.</p>