@microsoft/teamsfx-core 1.6.0 → 1.6.1-alpha.26caa3d10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. package/build/common/local/taskDefinition.d.ts +3 -0
  2. package/build/common/local/taskDefinition.d.ts.map +1 -1
  3. package/build/common/local/taskDefinition.js +36 -0
  4. package/build/common/local/taskDefinition.js.map +1 -1
  5. package/build/common/projectSettingsHelper.d.ts.map +1 -1
  6. package/build/common/projectSettingsHelper.js +2 -0
  7. package/build/common/projectSettingsHelper.js.map +1 -1
  8. package/build/common/telemetry.d.ts +17 -0
  9. package/build/common/telemetry.d.ts.map +1 -1
  10. package/build/common/telemetry.js +17 -0
  11. package/build/common/telemetry.js.map +1 -1
  12. package/build/common/template-utils/templatesActions.d.ts +2 -2
  13. package/build/common/template-utils/templatesActions.d.ts.map +1 -1
  14. package/build/common/template-utils/templatesActions.js +6 -6
  15. package/build/common/template-utils/templatesActions.js.map +1 -1
  16. package/build/common/templates-config.json +4 -3
  17. package/build/common/tools.d.ts +1 -0
  18. package/build/common/tools.d.ts.map +1 -1
  19. package/build/common/tools.js +15 -1
  20. package/build/common/tools.js.map +1 -1
  21. package/build/core/FxCore.d.ts.map +1 -1
  22. package/build/core/FxCore.js +25 -2
  23. package/build/core/FxCore.js.map +1 -1
  24. package/build/core/environment.d.ts +1 -0
  25. package/build/core/environment.d.ts.map +1 -1
  26. package/build/core/environment.js +9 -2
  27. package/build/core/environment.js.map +1 -1
  28. package/build/core/error.d.ts +3 -2
  29. package/build/core/error.d.ts.map +1 -1
  30. package/build/core/error.js +7 -1
  31. package/build/core/error.js.map +1 -1
  32. package/build/core/middleware/consolidateLocalRemote.d.ts +3 -0
  33. package/build/core/middleware/consolidateLocalRemote.d.ts.map +1 -0
  34. package/build/core/middleware/consolidateLocalRemote.js +203 -0
  35. package/build/core/middleware/consolidateLocalRemote.js.map +1 -0
  36. package/build/core/middleware/envInfoLoader.d.ts.map +1 -1
  37. package/build/core/middleware/envInfoLoader.js +6 -14
  38. package/build/core/middleware/envInfoLoader.js.map +1 -1
  39. package/build/core/middleware/envInfoWriter.d.ts.map +1 -1
  40. package/build/core/middleware/envInfoWriter.js +6 -0
  41. package/build/core/middleware/envInfoWriter.js.map +1 -1
  42. package/build/core/middleware/projectMigrator.d.ts +3 -0
  43. package/build/core/middleware/projectMigrator.d.ts.map +1 -1
  44. package/build/core/middleware/projectMigrator.js +3 -1
  45. package/build/core/middleware/projectMigrator.js.map +1 -1
  46. package/build/core/middleware/questionModel.d.ts.map +1 -1
  47. package/build/core/middleware/questionModel.js +55 -1
  48. package/build/core/middleware/questionModel.js.map +1 -1
  49. package/build/core/question.d.ts +10 -2
  50. package/build/core/question.d.ts.map +1 -1
  51. package/build/core/question.js +105 -33
  52. package/build/core/question.js.map +1 -1
  53. package/build/plugins/resource/aad/aadAppManifestManager.d.ts +9 -0
  54. package/build/plugins/resource/aad/aadAppManifestManager.d.ts.map +1 -0
  55. package/build/plugins/resource/aad/aadAppManifestManager.js +78 -0
  56. package/build/plugins/resource/aad/aadAppManifestManager.js.map +1 -0
  57. package/build/plugins/resource/aad/constants.d.ts +4 -0
  58. package/build/plugins/resource/aad/constants.d.ts.map +1 -1
  59. package/build/plugins/resource/aad/constants.js +7 -0
  60. package/build/plugins/resource/aad/constants.js.map +1 -1
  61. package/build/plugins/resource/aad/errors.d.ts +13 -0
  62. package/build/plugins/resource/aad/errors.d.ts.map +1 -1
  63. package/build/plugins/resource/aad/errors.js +15 -1
  64. package/build/plugins/resource/aad/errors.js.map +1 -1
  65. package/build/plugins/resource/aad/index.d.ts +2 -0
  66. package/build/plugins/resource/aad/index.d.ts.map +1 -1
  67. package/build/plugins/resource/aad/index.js +6 -1
  68. package/build/plugins/resource/aad/index.js.map +1 -1
  69. package/build/plugins/resource/aad/interfaces/AADApplication.d.ts +2 -3
  70. package/build/plugins/resource/aad/interfaces/AADApplication.d.ts.map +1 -1
  71. package/build/plugins/resource/aad/interfaces/AADManifest.d.ts +2 -3
  72. package/build/plugins/resource/aad/interfaces/AADManifest.d.ts.map +1 -1
  73. package/build/plugins/resource/aad/permissions/index.d.ts +1 -0
  74. package/build/plugins/resource/aad/permissions/index.d.ts.map +1 -1
  75. package/build/plugins/resource/aad/permissions/index.js +27 -1
  76. package/build/plugins/resource/aad/permissions/index.js.map +1 -1
  77. package/build/plugins/resource/aad/permissions/permissions.json +1084 -204
  78. package/build/plugins/resource/aad/plugin.d.ts +1 -1
  79. package/build/plugins/resource/aad/plugin.d.ts.map +1 -1
  80. package/build/plugins/resource/aad/plugin.js +11 -20
  81. package/build/plugins/resource/aad/plugin.js.map +1 -1
  82. package/build/plugins/resource/aad/utils/aadManifestHelper.d.ts +2 -0
  83. package/build/plugins/resource/aad/utils/aadManifestHelper.d.ts.map +1 -1
  84. package/build/plugins/resource/aad/utils/aadManifestHelper.js +74 -2
  85. package/build/plugins/resource/aad/utils/aadManifestHelper.js.map +1 -1
  86. package/build/plugins/resource/aad/v2/index.d.ts +2 -1
  87. package/build/plugins/resource/aad/v2/index.d.ts.map +1 -1
  88. package/build/plugins/resource/aad/v2/index.js +3 -0
  89. package/build/plugins/resource/aad/v2/index.js.map +1 -1
  90. package/build/plugins/resource/appstudio/constants.d.ts +3 -0
  91. package/build/plugins/resource/appstudio/constants.d.ts.map +1 -1
  92. package/build/plugins/resource/appstudio/constants.js +4 -1
  93. package/build/plugins/resource/appstudio/constants.js.map +1 -1
  94. package/build/plugins/resource/appstudio/index.d.ts +1 -0
  95. package/build/plugins/resource/appstudio/index.d.ts.map +1 -1
  96. package/build/plugins/resource/appstudio/index.js +37 -1
  97. package/build/plugins/resource/appstudio/index.js.map +1 -1
  98. package/build/plugins/resource/appstudio/manifestTemplate.d.ts.map +1 -1
  99. package/build/plugins/resource/appstudio/manifestTemplate.js +6 -0
  100. package/build/plugins/resource/appstudio/manifestTemplate.js.map +1 -1
  101. package/build/plugins/resource/appstudio/plugin.d.ts +3 -2
  102. package/build/plugins/resource/appstudio/plugin.d.ts.map +1 -1
  103. package/build/plugins/resource/appstudio/plugin.js +43 -14
  104. package/build/plugins/resource/appstudio/plugin.js.map +1 -1
  105. package/build/plugins/resource/appstudio/utils/telemetry.d.ts +1 -0
  106. package/build/plugins/resource/appstudio/utils/telemetry.d.ts.map +1 -1
  107. package/build/plugins/resource/appstudio/utils/telemetry.js +1 -0
  108. package/build/plugins/resource/appstudio/utils/telemetry.js.map +1 -1
  109. package/build/plugins/resource/appstudio/v2/index.d.ts +1 -0
  110. package/build/plugins/resource/appstudio/v2/index.d.ts.map +1 -1
  111. package/build/plugins/resource/appstudio/v2/index.js +3 -0
  112. package/build/plugins/resource/appstudio/v2/index.js.map +1 -1
  113. package/build/plugins/resource/bot/configs/teamsBotConfig.d.ts.map +1 -1
  114. package/build/plugins/resource/bot/configs/teamsBotConfig.js +7 -5
  115. package/build/plugins/resource/bot/configs/teamsBotConfig.js.map +1 -1
  116. package/build/plugins/resource/bot/constants.d.ts +3 -2
  117. package/build/plugins/resource/bot/constants.d.ts.map +1 -1
  118. package/build/plugins/resource/bot/constants.js +2 -1
  119. package/build/plugins/resource/bot/constants.js.map +1 -1
  120. package/build/plugins/resource/bot/enums/pluginActRoles.d.ts +2 -1
  121. package/build/plugins/resource/bot/enums/pluginActRoles.d.ts.map +1 -1
  122. package/build/plugins/resource/bot/enums/pluginActRoles.js +1 -0
  123. package/build/plugins/resource/bot/enums/pluginActRoles.js.map +1 -1
  124. package/build/plugins/resource/bot/functionsHostedBot/plugin.d.ts +1 -0
  125. package/build/plugins/resource/bot/functionsHostedBot/plugin.d.ts.map +1 -1
  126. package/build/plugins/resource/bot/functionsHostedBot/plugin.js +36 -0
  127. package/build/plugins/resource/bot/functionsHostedBot/plugin.js.map +1 -1
  128. package/build/plugins/resource/bot/languageStrategy.d.ts.map +1 -1
  129. package/build/plugins/resource/bot/languageStrategy.js +3 -1
  130. package/build/plugins/resource/bot/languageStrategy.js.map +1 -1
  131. package/build/plugins/resource/bot/plugin.d.ts.map +1 -1
  132. package/build/plugins/resource/bot/plugin.js +7 -3
  133. package/build/plugins/resource/bot/plugin.js.map +1 -1
  134. package/build/plugins/resource/bot/question.d.ts.map +1 -1
  135. package/build/plugins/resource/bot/question.js +4 -3
  136. package/build/plugins/resource/bot/question.js.map +1 -1
  137. package/build/plugins/resource/bot/resources/messages.d.ts.map +1 -1
  138. package/build/plugins/resource/bot/resources/messages.js +1 -1
  139. package/build/plugins/resource/bot/resources/messages.js.map +1 -1
  140. package/build/plugins/resource/bot/v3/index.d.ts.map +1 -1
  141. package/build/plugins/resource/bot/v3/index.js +0 -1
  142. package/build/plugins/resource/bot/v3/index.js.map +1 -1
  143. package/build/plugins/resource/cicd/constants.d.ts +3 -3
  144. package/build/plugins/resource/cicd/constants.d.ts.map +1 -1
  145. package/build/plugins/resource/cicd/constants.js +4 -3
  146. package/build/plugins/resource/cicd/constants.js.map +1 -1
  147. package/build/plugins/resource/cicd/errors.d.ts.map +1 -1
  148. package/build/plugins/resource/cicd/errors.js +3 -4
  149. package/build/plugins/resource/cicd/errors.js.map +1 -1
  150. package/build/plugins/resource/cicd/index.d.ts.map +1 -1
  151. package/build/plugins/resource/cicd/index.js +12 -5
  152. package/build/plugins/resource/cicd/index.js.map +1 -1
  153. package/build/plugins/resource/cicd/plugin.d.ts.map +1 -1
  154. package/build/plugins/resource/cicd/plugin.js +7 -6
  155. package/build/plugins/resource/cicd/plugin.js.map +1 -1
  156. package/build/plugins/resource/cicd/questions.d.ts.map +1 -1
  157. package/build/plugins/resource/cicd/questions.js +5 -4
  158. package/build/plugins/resource/cicd/questions.js.map +1 -1
  159. package/build/plugins/resource/frontend/constants.d.ts +0 -1
  160. package/build/plugins/resource/frontend/constants.d.ts.map +1 -1
  161. package/build/plugins/resource/frontend/constants.js +0 -1
  162. package/build/plugins/resource/frontend/constants.js.map +1 -1
  163. package/build/plugins/resource/frontend/dotnet/constants.d.ts +0 -1
  164. package/build/plugins/resource/frontend/dotnet/constants.d.ts.map +1 -1
  165. package/build/plugins/resource/frontend/dotnet/constants.js +0 -1
  166. package/build/plugins/resource/frontend/dotnet/constants.js.map +1 -1
  167. package/build/plugins/resource/frontend/dotnet/ops/scaffold.d.ts.map +1 -1
  168. package/build/plugins/resource/frontend/dotnet/ops/scaffold.js +0 -1
  169. package/build/plugins/resource/frontend/dotnet/ops/scaffold.js.map +1 -1
  170. package/build/plugins/resource/frontend/ops/scaffold.d.ts.map +1 -1
  171. package/build/plugins/resource/frontend/ops/scaffold.js +0 -1
  172. package/build/plugins/resource/frontend/ops/scaffold.js.map +1 -1
  173. package/build/plugins/resource/frontend/resources/templateInfo.d.ts +1 -0
  174. package/build/plugins/resource/frontend/resources/templateInfo.d.ts.map +1 -1
  175. package/build/plugins/resource/frontend/resources/templateInfo.js +7 -2
  176. package/build/plugins/resource/frontend/resources/templateInfo.js.map +1 -1
  177. package/build/plugins/resource/frontend/v3/index.d.ts.map +1 -1
  178. package/build/plugins/resource/frontend/v3/index.js +0 -1
  179. package/build/plugins/resource/frontend/v3/index.js.map +1 -1
  180. package/build/plugins/resource/function/constants.d.ts +0 -1
  181. package/build/plugins/resource/function/constants.d.ts.map +1 -1
  182. package/build/plugins/resource/function/constants.js +0 -1
  183. package/build/plugins/resource/function/constants.js.map +1 -1
  184. package/build/plugins/resource/function/ops/scaffold.d.ts.map +1 -1
  185. package/build/plugins/resource/function/ops/scaffold.js +0 -1
  186. package/build/plugins/resource/function/ops/scaffold.js.map +1 -1
  187. package/build/plugins/resource/spfx/depsChecker/dependencyChecker.d.ts +7 -0
  188. package/build/plugins/resource/spfx/depsChecker/dependencyChecker.d.ts.map +1 -0
  189. package/build/plugins/resource/spfx/depsChecker/dependencyChecker.js +5 -0
  190. package/build/plugins/resource/spfx/depsChecker/dependencyChecker.js.map +1 -0
  191. package/build/plugins/resource/spfx/depsChecker/generatorChecker.d.ts +20 -0
  192. package/build/plugins/resource/spfx/depsChecker/generatorChecker.d.ts.map +1 -0
  193. package/build/plugins/resource/spfx/depsChecker/generatorChecker.js +125 -0
  194. package/build/plugins/resource/spfx/depsChecker/generatorChecker.js.map +1 -0
  195. package/build/plugins/resource/spfx/depsChecker/yoChecker.d.ts +20 -0
  196. package/build/plugins/resource/spfx/depsChecker/yoChecker.d.ts.map +1 -0
  197. package/build/plugins/resource/spfx/depsChecker/yoChecker.js +122 -0
  198. package/build/plugins/resource/spfx/depsChecker/yoChecker.js.map +1 -0
  199. package/build/plugins/resource/spfx/error.d.ts +4 -0
  200. package/build/plugins/resource/spfx/error.d.ts.map +1 -1
  201. package/build/plugins/resource/spfx/error.js +17 -1
  202. package/build/plugins/resource/spfx/error.js.map +1 -1
  203. package/build/plugins/resource/spfx/plugin.d.ts.map +1 -1
  204. package/build/plugins/resource/spfx/plugin.js +21 -4
  205. package/build/plugins/resource/spfx/plugin.js.map +1 -1
  206. package/build/plugins/resource/spfx/utils/telemetryEvents.d.ts +11 -0
  207. package/build/plugins/resource/spfx/utils/telemetryEvents.d.ts.map +1 -0
  208. package/build/plugins/resource/spfx/utils/telemetryEvents.js +18 -0
  209. package/build/plugins/resource/spfx/utils/telemetryEvents.js.map +1 -0
  210. package/build/plugins/solution/fx-solution/constants.d.ts +8 -2
  211. package/build/plugins/solution/fx-solution/constants.d.ts.map +1 -1
  212. package/build/plugins/solution/fx-solution/constants.js +6 -0
  213. package/build/plugins/solution/fx-solution/constants.js.map +1 -1
  214. package/build/plugins/solution/fx-solution/debug/constants.d.ts +15 -0
  215. package/build/plugins/solution/fx-solution/debug/constants.d.ts.map +1 -1
  216. package/build/plugins/solution/fx-solution/debug/constants.js +18 -1
  217. package/build/plugins/solution/fx-solution/debug/constants.js.map +1 -1
  218. package/build/plugins/solution/fx-solution/debug/scaffolding.d.ts.map +1 -1
  219. package/build/plugins/solution/fx-solution/debug/scaffolding.js +16 -9
  220. package/build/plugins/solution/fx-solution/debug/scaffolding.js.map +1 -1
  221. package/build/plugins/solution/fx-solution/debug/util/launchNext.d.ts +2 -0
  222. package/build/plugins/solution/fx-solution/debug/util/launchNext.d.ts.map +1 -1
  223. package/build/plugins/solution/fx-solution/debug/util/launchNext.js +145 -4
  224. package/build/plugins/solution/fx-solution/debug/util/launchNext.js.map +1 -1
  225. package/build/plugins/solution/fx-solution/debug/util/tasksNext.d.ts +1 -0
  226. package/build/plugins/solution/fx-solution/debug/util/tasksNext.d.ts.map +1 -1
  227. package/build/plugins/solution/fx-solution/debug/util/tasksNext.js +74 -1
  228. package/build/plugins/solution/fx-solution/debug/util/tasksNext.js.map +1 -1
  229. package/build/plugins/solution/fx-solution/question.d.ts +4 -1
  230. package/build/plugins/solution/fx-solution/question.d.ts.map +1 -1
  231. package/build/plugins/solution/fx-solution/question.js +22 -2
  232. package/build/plugins/solution/fx-solution/question.js.map +1 -1
  233. package/build/plugins/solution/fx-solution/v2/executeUserTask.d.ts +2 -0
  234. package/build/plugins/solution/fx-solution/v2/executeUserTask.d.ts.map +1 -1
  235. package/build/plugins/solution/fx-solution/v2/executeUserTask.js +91 -7
  236. package/build/plugins/solution/fx-solution/v2/executeUserTask.js.map +1 -1
  237. package/build/plugins/solution/fx-solution/v2/getQuestions.d.ts.map +1 -1
  238. package/build/plugins/solution/fx-solution/v2/getQuestions.js +25 -22
  239. package/build/plugins/solution/fx-solution/v2/getQuestions.js.map +1 -1
  240. package/build/plugins/solution/fx-solution/v2/scaffolding.d.ts.map +1 -1
  241. package/build/plugins/solution/fx-solution/v2/scaffolding.js +6 -4
  242. package/build/plugins/solution/fx-solution/v2/scaffolding.js.map +1 -1
  243. package/build/plugins/solution/fx-solution/v2/utils.d.ts.map +1 -1
  244. package/build/plugins/solution/fx-solution/v2/utils.js +15 -7
  245. package/build/plugins/solution/fx-solution/v2/utils.js.map +1 -1
  246. package/package.json +3 -3
  247. package/resource/package.nls.json +83 -16
  248. package/templates/core/README-auto-generated.md +31 -0
  249. package/templates/{plugins/resource/dotnet → fallback}/blazor-base.csharp.default.zip +0 -0
  250. package/templates/{plugins/resource/bot → fallback}/bot.csharp.default.zip +0 -0
  251. package/templates/{plugins/resource/bot → fallback}/bot.js.default.zip +0 -0
  252. package/templates/{plugins/resource/bot → fallback}/bot.ts.default.zip +0 -0
  253. package/templates/fallback/bot.ts.notification-function-base.zip +0 -0
  254. package/templates/fallback/bot.ts.notification-trigger-http.zip +0 -0
  255. package/templates/fallback/bot.ts.notification-trigger-timer.zip +0 -0
  256. package/templates/fallback/bot.ts.notification.zip +0 -0
  257. package/templates/{plugins/resource/function → fallback}/function-base.js.default.zip +0 -0
  258. package/templates/{plugins/resource/function → fallback}/function-base.ts.default.zip +0 -0
  259. package/templates/{plugins/resource/function → fallback}/function-triggers.js.HTTPTrigger.zip +0 -0
  260. package/templates/{plugins/resource/function → fallback}/function-triggers.ts.HTTPTrigger.zip +0 -0
  261. package/templates/{plugins/resource/frontend → fallback}/tab.csharp.default.zip +0 -0
  262. package/templates/{plugins/resource/frontend → fallback}/tab.js.default.zip +0 -0
  263. package/templates/fallback/tab.js.m365.zip +0 -0
  264. package/templates/fallback/tab.js.non-sso.zip +0 -0
  265. package/templates/{plugins/resource/frontend → fallback}/tab.ts.default.zip +0 -0
  266. package/templates/fallback/tab.ts.m365.zip +0 -0
  267. package/templates/fallback/tab.ts.non-sso.zip +0 -0
  268. package/templates/plugins/resource/aad/manifest/aad.template.json +0 -5
  269. package/templates/plugins/resource/bot/bicep/botProvision.template.bicep +4 -0
  270. package/templates/plugins/resource/bot/bicep/funcHostedBotProvision.template.bicep +121 -0
@@ -40,6 +40,9 @@
40
40
  "core.migrationToArmAndMultiEnv.SuccessMessage": "Upgrade succeeded. Your project is upgraded to new configuration files.",
41
41
  "core.migrationToArmAndMultiEnv.ErrorMessage": "Upgrade Failed. Please check the error message in Output window to troubleshoot and fix. You can also click Learn More for the FAQ and how to upgrade manually.",
42
42
  "core.migrationToArmAndMultiEnv.PreCheckErrorMessage": "Upgrade Failed. '%s' doesn't exist or is not in json format. Please fix it and try again by running command (Teams: Upgrade project).\nYou can also click Learn More for the FAQ.",
43
+ "core.consolidateLocalRemote.Message": "Teams Toolkit will upgrade your project's local config and manifest template to support the latest features. The upgrade process will not change your custom code and create the backup files in case revert is needed.\nNotice this upgrade is a must-have to continue to use current version Teams Toolkit. If you are not ready to upgrade and want to continue to use the old version, please find Teams Toolkit in Extension and install the version <= ????",
44
+ "core.consolidateLocalRemote.SuccessMessage": "Upgrade succeeded. Your project is upgraded to new configuration files.",
45
+ "core.consolidateLocalRemote.outputMsg": "Congratulations! You have successfully upgraded your Teams App project structure. We have added config.local.json for local debug and manifest.template.json for both Teams app running locally and remotely. And we have backed up localSettings.json, manifest.local.template.json and manifest.remote.template.json to .backup folder.",
43
46
  "core.deployArmTemplates.StartNotice": "[%s] Start deploying ARM templates.",
44
47
  "core.deployArmTemplates.CompileBicepSuccessNotice": "[%s] Successfully compile bicep files to JSON.",
45
48
  "core.deployArmTemplates.SuccessNotice": "[%s] Successfully deploy ARM templates. Resource group name: %s. Deployment name: %s",
@@ -111,6 +114,10 @@
111
114
  "plugins.spfx.deploy.createAppcatalog": "Create Sharepoint app catalog",
112
115
  "plugins.spfx.deploy.uploadAddDeploy": "Upload and deploy SPFx package to your tenant app catalog",
113
116
  "plugins.spfx.scaffold.title": "Scaffolding project",
117
+ "plugins.spfx.error.npmNotFound": "Npm not found on your machine!",
118
+ "plugins.spfx.error.npmInstallFailed": "Failed to run 'npm install' due to %s",
119
+ "plugins.spfx.error.invalidDependency": "Failed to validate package %s",
120
+ "plugins.spfx.error.installDependency": "Failed to install package %s",
114
121
  "plugins.frontend.checkLogTip": "Check log for more information.",
115
122
  "plugins.frontend.reScaffoldTip": "Run 'Start A New Project' again.",
116
123
  "plugins.frontend.doProvisionTip": "Run 'Provision Resource' before this command.",
@@ -129,6 +136,7 @@
129
136
  "plugins.frontend.checkSystemTimeTip": "You may get expired credentials, check if your system time is correct.",
130
137
  "plugins.frontend.restoreEnvironmentTip": "If you manually updated configuration files (under directory .%s), recover them.",
131
138
  "plugins.baseErrorMessage": "%s Suggestions: %s",
139
+ "suggestions.retryTheCurrentStep": "Please retry the current step.",
132
140
  "plugins.appstudio.publishTip": "Teams: Publish to Teams",
133
141
  "plugins.appstudio.validationFailedNotice": "Manifest Validation failed!",
134
142
  "plugins.appstudio.validationSucceedNotice": "Manifest Validation succeed!",
@@ -144,6 +152,9 @@
144
152
  "plugins.appstudio.updateManifestTip": "The manifest file configurations has been modified already. Do you want to continue to regenerate the manifest file and update to Teams platform?",
145
153
  "plugins.appstudio.updateOverwriteTip": "The manifest file on Teams platform has been changed since your last update. Do you want to continue to update and overwrite the manifest file on Teams platform?",
146
154
  "plugins.appstudio.provisionTip": "You must run 'Provision in the cloud' first to fill out certain fields in manifest. Click Get Help to learn more about why you need to provision.",
155
+ "plugins.appstudio.provisionTitle": "Provision Teams app",
156
+ "plugins.appstudio.provisionProgress": "Registering Teams app %s...",
157
+ "plugins.appstudio.postProvisionProgress": "Updating Teams app %s...",
147
158
  "plugins.appstudio.publishProgressValidate": "Validating manifest file",
148
159
  "plugins.appstudio.publishProgressUpdate": "Updating app definition for app %s in app studio",
149
160
  "plugins.appstudio.publishProgressBuild": "Building Teams app package in %s.",
@@ -157,18 +168,18 @@
157
168
  "plugins.bot.questionHostTypeTrigger.placeholder": "Choose triggers",
158
169
  "plugins.bot.questionHostTypeTrigger.error.emptySelection": "You have to select at least one trigger.",
159
170
  "plugins.bot.questionHostTypeTrigger.error.hostTypeConflict": "Azure Functions and Azure App Service host types are in conflict.",
160
- "plugins.bot.triggers.functionsTimer.label": "Timer Trigger",
161
- "plugins.bot.triggers.functionsTimer.cliName": "timer",
162
- "plugins.bot.triggers.functionsTimer.description": "A function that will be run on a specific schedule.",
163
- "plugins.bot.triggers.functionsTimer.detail": "A function hosted on Azure Functions that will be run on a specific schedule.",
164
- "plugins.bot.triggers.functionsHttp.label": "HTTP Trigger",
165
- "plugins.bot.triggers.functionsHttp.cliName": "http",
166
- "plugins.bot.triggers.functionsHttp.description": "A function that will be run whenever it receives an HTTP request.",
167
- "plugins.bot.triggers.functionsHttp.detail": "A function hosted on Azure Functions that will be run whenever it receives an HTTP request.",
168
- "plugins.bot.triggers.appService.label": "HTTP Trigger (Restify)",
169
- "plugins.bot.triggers.appService.cliName": "http-restify",
170
- "plugins.bot.triggers.appService.description": "A restify server that will be run whenever it receives an HTTP request.",
171
- "plugins.bot.triggers.appService.detail": "A restify server hosted on Azure App Service that will be run whenever it receives an HTTP request.",
171
+ "plugins.bot.triggers.timer.label": "Timer Trigger",
172
+ "plugins.bot.triggers.timer.cliName": "timer",
173
+ "plugins.bot.triggers.timer.description": "A function that will be run on a specific schedule.",
174
+ "plugins.bot.triggers.timer.detail": "A function hosted on Azure Functions that will be run on a specific schedule.",
175
+ "plugins.bot.triggers.http.label": "HTTP Trigger",
176
+ "plugins.bot.triggers.http.cliName": "http",
177
+ "plugins.bot.triggers.http.description": "A function that will be run whenever it receives an HTTP request.",
178
+ "plugins.bot.triggers.http.detail": "A function hosted on Azure Functions that will be run whenever it receives an HTTP request.",
179
+ "plugins.bot.triggers.http-restify.label": "HTTP Trigger (Restify)",
180
+ "plugins.bot.triggers.http-restify.cliName": "http-restify",
181
+ "plugins.bot.triggers.http-restify.description": "A restify server that will be run whenever it receives an HTTP request.",
182
+ "plugins.bot.triggers.http-restify.detail": "A restify server hosted on Azure App Service that will be run whenever it receives an HTTP request.",
172
183
  "plugins.function.recoverTeamsFxConfigFilesTip": "If you manually updated configuration files (under directory .%s), recover them.",
173
184
  "plugins.function.recreateProject": "If you can not recover configuration files, create a new project.",
174
185
  "plugins.function.checkNetwork": "Check your network connection.",
@@ -217,6 +228,22 @@
217
228
  "plugins.sql.errorMessage.ServicePrincipalWarning": "service principal admin in azure sql can't add database user <%s>. You can add the user for %s manually",
218
229
  "plugins.sql.errorMessage.DomainError": "Conditional Access policy requires a compliant device, and the device is not compliant. %s",
219
230
  "plugins.sql.errorMessage.GuestAdminError": "SQL admin does not have enough permission to add database user. %s",
231
+ "plugins.cicd.ciOption.detail": "Help checkout code, build and run test.",
232
+ "plugins.cicd.cdOption.detail": "Help checkout code, build, test and deploy to cloud.",
233
+ "plugins.cicd.provisionOption.detail": "Help create/update resources in cloud and Teams app registration.",
234
+ "plugins.cicd.publishOption.detail": "Help publish Teams app to tenants.",
235
+ "plugins.cicd.whichProvider.title": "Select a CI/CD Provider",
236
+ "plugins.cicd.whichTemplate.title": "Select template(s)",
237
+ "plugins.cicd.whichEnvironment.title": "Select an environment",
238
+ "plugins.cicd.ProgressBar.scaffold.title": "Scaffolding workflow automation files",
239
+ "plugins.cicd.ProgressBar.scaffold.detail": "Scaffolding workflow file for %s.",
240
+ "plugins.cicd.result.scaffold.created": "Workflow automation file(s) of %s for (%s, %s) have been successfully added for your project. Follow the instructions in Readme file to setup the workflow(s).",
241
+ "plugins.cicd.result.scaffold.skipped": "You have already created template(s) of %s for (%s, %s), please customize it or remove it to create a new one.",
242
+ "plugins.cicd.suggestions.checkPermission": "Please check if you got sufficient permission.",
243
+ "plugins.cicd.suggestions.createProjectOrOpenExisting": "You can create a new project or open an existing one.",
244
+ "error.cicd.FailedToListMultiEnv": "Failed to list multi env.",
245
+ "error.cicd.PreconditionNotMet": "Some preconditions of inputs are not met.",
246
+ "error.cicd.NoProjectOpened.details": "No project opened.",
220
247
  "error.ProjectFolderExistError": "Path %s already exists. Select a different folder.",
221
248
  "error.PathNotExistError": "Path does not exist: %s",
222
249
  "error.ProjectFolderInvalidError": "Path %s is invalid, please set valid root folder in user settings(Use absolute directory or relative directory start with \\${homeDir} ).",
@@ -227,6 +254,8 @@
227
254
  "error.ProjectEnvNotExistError": "Environment %s not found. Make sure the config.%s.json file exist.",
228
255
  "error.InvalidEnvNameError": "Environment name can only contain letters, digits, _ and -.",
229
256
  "error.UpgradeCanceledError": "If you don't want to upgrade your project, please install another version of Teams Toolkit (version <= 2.10.0).",
257
+ "error.ConsolidateCanceledError": "If you don't want to upgrade your project, please install another version of Teams Toolkit (version <= ????).",
258
+ "error.OperationNotSupportedForExistingAppError": "Operation is not supported for existing app: %s.",
230
259
  "error.OperationNotPermittedError": "Operation is not permitted: %s",
231
260
  "error.TaskNotSupportError": "Operation is not supported: %s.",
232
261
  "error.frontend.UnauthenticatedError": "Failed to get user login information.",
@@ -312,6 +341,8 @@
312
341
  "core.MessageExtensionOption.detail": "Inserting app content or acting on a message without leaving the conversation",
313
342
  "core.NotificationOption.description": "Notification",
314
343
  "core.NotificationOption.detail": "Sending a message in response to stimulus not originating from the user",
344
+ "core.CommandAndResponseOption.description": "Conversational Agent",
345
+ "core.CommandAndResponseOption.detail": "Running simple and repetitive automated tasks through conversations",
315
346
  "core.TabSPFxOption.description": "UI-base app with SPFx framework",
316
347
  "core.TabSPFxOption.detail": "Teams-aware webpages with SPFx framework embedded in Microsoft Teams",
317
348
  "core.Sso.description": "Single Sign On",
@@ -319,8 +350,11 @@
319
350
  "core.createCapabilityQuestion.title": "Select capabilities",
320
351
  "core.createCapabilityQuestion.placeholder": "Select at least 1 capability",
321
352
  "core.createCapabilityQuestion.validation1": "Teams Toolkit offers only the Tab capability in a Teams app with Visual Studio Code and SharePoint Framework. The Bot and Messaging extension capabilities are not available",
322
- "core.createCapabilityQuestion.validation2": "Bot and Notification capability are in conflict",
323
- "core.createCapabilityQuestion.validation3": "Messaging extension and Notification capability are in conflict",
353
+ "core.createCapabilityQuestion.botNotificationConflict": "Bot and Notification capabilities are in conflict",
354
+ "core.createCapabilityQuestion.botCommandAndResponseConflict": "Bot and Command and Response capabilities are in conflict",
355
+ "core.createCapabilityQuestion.notificationCommandAndResponseConflict": "Notification and Command and Response capabilities are in conflict",
356
+ "core.createCapabilityQuestion.meNotificationConflict": "Messaging Extension and Notification capabilities are in conflict",
357
+ "core.createCapabilityQuestion.meCommandAndResponseConflict": "Messaging Extension and Command and Response capabilities are in conflict",
324
358
  "core.QuestionSelectTargetEnvironment.title": "Select an environment",
325
359
  "core.getQuestionNewTargetEnvironmentName.title": "New environment name",
326
360
  "core.getQuestionNewTargetEnvironmentName.placeholder": "New environment name",
@@ -336,9 +370,13 @@
336
370
  "core.QuestionNewResourceGroupName.validation": "The name can only contain alphanumeric characters or the symbols ._-()",
337
371
  "core.QuestionNewResourceGroupLocation.title": "Location for the new resource group",
338
372
  "core.ScratchOptionYesVSC.label": "Create a new Teams app",
339
- "core.ScratchOptionYesVSC.detail": "Use the Teams Toolkit to create a new application.",
373
+ "core.ScratchOptionYesVSC.detail": "Use the Teams Toolkit to create a new Teams application.",
374
+ "core.ScratchOptionYesM365VSC.label": "Create a new Microsoft 365 app",
375
+ "core.ScratchOptionYesM365VSC.detail": "Use the Teams Toolkit to create a new Microsoft 365 application.",
340
376
  "core.ScratchOptionYes.label": "Create a new Teams app",
341
- "core.ScratchOptionYes.detail": "Use the Teams Toolkit to create a new application.",
377
+ "core.ScratchOptionYes.detail": "Use the Teams Toolkit to create a new Teams application.",
378
+ "core.ScratchOptionYesM365.label": "Create a new Microsoft 365 app",
379
+ "core.ScratchOptionYesM365.detail": "Use the Teams Toolkit to create a new Microsoft 365 application.",
342
380
  "core.ScratchOptionNoVSC.label": "Start from a sample",
343
381
  "core.ScratchOptionNoVSC.detail": "Use an existing sample as a starting point for your new application.",
344
382
  "core.ScratchOptionNo.label": "Start from a sample",
@@ -359,6 +397,19 @@
359
397
  "core.getUserEmailQuestion.title": "Add owner to Teams/AAD app for the account under the same M365 tenant (email)",
360
398
  "core.getUserEmailQuestion.validation1": "Email address cannot be null or empty",
361
399
  "core.getUserEmailQuestion.validation2": "Please change [UserName] to the real user name",
400
+ "core.M365AppTypeSelectQuestion.title": "Select an app type",
401
+ "core.M365AppTypeSelectQuestion.placeholder": "Select a type of application to jumpstart your project.",
402
+ "core.M365LaunchPageOptionItem.description": "Web pages embedded in Teams, Outlook and Office.com",
403
+ "core.M365MessagingExtensionOptionItem.description": "Custom UI when user composes messages in Teams or emails in Outlook",
404
+ "core.M365MessagingExtensionOptionItem.detail": "Insert app content in conversations or emails.",
405
+ "core.common.TeamsMobileDesktopClientName": "Teams desktop, mobile client id",
406
+ "core.common.TeamsWebClientName": "Teams web client id",
407
+ "core.common.OfficeDesktopClientName": "Office desktop client id",
408
+ "core.common.OfficeWebClientName1": "Office.com client id 1",
409
+ "core.common.OfficeWebClientName2": "Office.com client id 2",
410
+ "core.common.OutlookDesktopClientName": "Outlook desktop client id",
411
+ "core.common.OutlookWebClientName1": "Outlook web access client id 1",
412
+ "core.common.OutlookWebClientName2": "Outlook web access client id 2",
362
413
  "error.aad.GetAppError": "Failed to get AAD app with Object Id \"%s\" in tenant \"%s\". Please make sure the object id is valid, or delete 'objectId' under %s in %s and try again.",
363
414
  "error.aad.GetAppConfigError": "Failed to get %s from Azure AD app settings. Please make sure Azure AD app is correctly configured, or delete 'objectId' under %s in %s and try again.",
364
415
  "error.aad.GetSkipAppConfigError": "Failed to get all necessary info. You need to set %s, %s, %s, %s under%s in %s.",
@@ -393,6 +444,17 @@
393
444
  "error.aad.client.AppObjectIdIsNull": "Missing Object ID.",
394
445
  "error.aad.client.EmptyResponse": "Missing response.",
395
446
  "error.aad.client.ReachRetryLimit": "Exceeded retry limit.",
447
+ "error.aad.manifest.NameIsMissing": "name is missing\n",
448
+ "error.aad.manifest.SignInAudienceIsMissing": "signInAudience is missing\n",
449
+ "error.aad.manifest.RequiredResourceAccessIsMissing": "requiredResourceAccess is missing\n",
450
+ "error.aad.manifest.Oauth2PermissionsIsMissing": "oauth2Permissions is missing\n",
451
+ "error.aad.manifest.PreAuthorizedApplicationsIsMissing": "preAuthorizedApplications is missing\n",
452
+ "error.aad.manifest.AccessTokenAcceptedVersionIs1": "accessTokenAcceptedVersion is 1 which may introduce problem\n",
453
+ "error.aad.manifest.OptionalClaimsIsMissing": "optionalClaims is missing\n",
454
+ "error.aad.manifest.OptionalClaimsMissingIdtypClaim":"optionalClaims access token doesn't contain idtyp claim, which may introduce problem\n",
455
+ "error.aad.manifest.UnknownResourceAppId":"Unknown resourceAppId %s",
456
+ "error.aad.manifest.UnknownResourceAccessType": "Unknown resourceAccess: %s",
457
+ "error.aad.manifest.UnknownResourceAccessId": "Unknown resourceAccess id: %s",
396
458
  "plugins.aad.NoSelection": "No Azure AD app found. Will not update permissions. You need to run provision or local debug first.",
397
459
  "plugins.aad.UserCancelled": "Selection is cancelled by user.",
398
460
  "plugins.aad.UpdatePermissionSuccessMessage": "Successfully updated permission for Azure AD app. You can go to Azure Portal to check the permission or grant admin consent.",
@@ -461,6 +523,11 @@
461
523
  "error.sa.VersionFileNotExist": "`Failed to load version file from %s",
462
524
  "plugins.sa.RegisterRersourceProviderFailed": "Failed to register required resource provider for Simple Auth. Reason: %s. Register required resource provider %s manually.",
463
525
  "plugins.sa.FreeServerFarmsQuotaErrorToUser": "The maximum number of Free App Service Plan allowed in a Subscription is 10. Delete a free App Service plan and try again.",
526
+ "core.addSso.onlySupportAzure": "Add SSO is only supported for project hosted in Azure",
527
+ "core.addSso.needCapability": "Add SSO is only supported for project with Tab, Bot and/or Messaging Extension. You need to run 'add component' first",
528
+ "core.addSso.needEnableFeatureFlag": "Need to set 'TEAMSFX_AAD_MANIFEST' in env to use add SSO feature",
529
+ "core.addSso.ssoEnabled": "SSO is already enabled",
530
+ "core.addSso.invalidSsoProject": "Invalid project. You may have modified '.fx/projectSettings.json' file.",
464
531
  "core.getUserEmailQuestion.validation3": "Email address is not valid",
465
532
  "plugins.bot.DetailedError": "Detailed error: %s.",
466
533
  "plugins.bot.DetailedErrorReason": "Reason: %s",
@@ -0,0 +1,31 @@
1
+ # TeamsFx Project
2
+
3
+ ## Take a tour of your app source code
4
+
5
+ After initializing the project, you can view the project folders and files in the Explorer area of Visual Studio Code after the Teams Toolkit registers and configures your app. The following table lists all the scaffolded folder and files by Teams Toolkit:
6
+
7
+ | File name | Contents |
8
+ |- | -|
9
+ |`.fx/configs/config.local.json`| Configuration file for local environment |
10
+ |`.fx/configs/config.dev.json`| Configuration file for dev environment |
11
+ |`.fx/configs/projectSettings.json`| Global project settings, which apply to all environments |
12
+ |`templates/appPackage/manifest.template.json`|Teams app manifest template|
13
+ |`templates/appPackage/resources`|Teams app's icon referenced by manifest template|
14
+
15
+
16
+ ## Add components
17
+
18
+ Now you're able to add components with Teams Toolkit to build Teams app for below scenarios.
19
+
20
+ ### Scenario 1: Send Notification to Teams
21
+
22
+ Sending a message in response to stimulus tasks through conversations. Please refer to [our wiki](https://github.com/OfficeDev/TeamsFx/wiki/Incremental-Build#scenario-1-send-notification-to-teams) for instructions.
23
+
24
+ ### Scenario 2: Build Command And Response
25
+
26
+ Running simple and repetitive automated tasks through conversations. Please refer to [our wiki](https://github.com/OfficeDev/TeamsFx/wiki/Incremental-Build#scenario-2-build-command-and-response) for instructions.
27
+
28
+
29
+ ### Scenario 3: Embed your existing web pages in Teams
30
+
31
+ Integrate with your existing web page application to build a Teams app. Please refer to [our wiki](https://github.com/OfficeDev/TeamsFx/wiki/Incremental-Build#scenario-3-embed-your-existing-web-pages-in-teams) for instructions.
@@ -91,11 +91,6 @@
91
91
  ]
92
92
  }
93
93
  ],
94
- "passwordCredentials": [
95
- {
96
- "displayName": "default"
97
- }
98
- ],
99
94
  "identifierUris": [
100
95
  "{{state.fx-resource-aad-app-for-teams.applicationIdUris}}"
101
96
  ],
@@ -64,6 +64,10 @@ resource webApp 'Microsoft.Web/sites@2021-02-01' = {
64
64
  name: 'WEBSITE_NODE_DEFAULT_VERSION'
65
65
  value: '~14' // Set NodeJS version to 14.x for your site
66
66
  }
67
+ {
68
+ name: 'RUNNING_ON_AZURE'
69
+ value: '1'
70
+ }
67
71
  ]
68
72
  }
69
73
  }
@@ -0,0 +1,121 @@
1
+ @secure()
2
+ param provisionParameters object
3
+ param userAssignedIdentityId string
4
+
5
+ var resourceBaseName = provisionParameters.resourceBaseName
6
+ var botAadAppClientId = provisionParameters['botAadAppClientId'] // Read AAD app client id for Azure Bot Service from parameters
7
+ var botServiceName = contains(provisionParameters, 'botServiceName') ? provisionParameters['botServiceName'] : '${resourceBaseName}' // Try to read name for Azure Bot Service from parameters
8
+ var botServiceSku = contains(provisionParameters, 'botServiceSku') ? provisionParameters['botServiceSku'] : 'F0' // Try to read SKU for Azure Bot Service from parameters
9
+ var botDisplayName = contains(provisionParameters, 'botDisplayName') ? provisionParameters['botDisplayName'] : '${resourceBaseName}' // Try to read display name for Azure Bot Service from parameters
10
+ var serverfarmsName = contains(provisionParameters, 'botServerfarmsName') ? provisionParameters['botServerfarmsName'] : '${resourceBaseName}bot' // Try to read name for App Service Plan from parameters
11
+ var webAppSKU = contains(provisionParameters, 'botWebAppSKU') ? provisionParameters['botWebAppSKU'] : 'B1' // Try to read SKU for Azure Web App from parameters
12
+ var webAppName = contains(provisionParameters, 'botSitesName') ? provisionParameters['botSitesName'] : '${resourceBaseName}bot' // Try to read name for Azure Web App from parameters
13
+ var storageName = contains(provisionParameters, 'botStorageName') ? provisionParameters['botStorageName'] : '${resourceBaseName}bot' // Try to read name for Azure Storage from parameters
14
+ var storageSku = contains(provisionParameters, 'botStorageSku') ? provisionParameters['botStorageSku'] : 'Standard_LRS' // Try to read SKU for Azure Storage from parameters
15
+
16
+ // Register your web service as a bot with the Bot Framework
17
+ resource botService 'Microsoft.BotService/botServices@2021-03-01' = {
18
+ kind: 'azurebot'
19
+ location: 'global'
20
+ name: botServiceName
21
+ properties: {
22
+ displayName: botDisplayName
23
+ endpoint: uri('https://${functionApp.properties.defaultHostName}', '/api/messages')
24
+ msaAppId: botAadAppClientId
25
+ }
26
+ sku: {
27
+ name: botServiceSku // You can follow https://aka.ms/teamsfx-bicep-add-param-tutorial to add botServiceSku property to provisionParameters to override the default value "F0".
28
+ }
29
+ }
30
+
31
+ // Connect the bot service to Microsoft Teams
32
+ resource botServiceMsTeamsChannel 'Microsoft.BotService/botServices/channels@2021-03-01' = {
33
+ parent: botService
34
+ location: 'global'
35
+ name: 'MsTeamsChannel'
36
+ properties: {
37
+ channelName: 'MsTeamsChannel'
38
+ }
39
+ }
40
+
41
+ // Compute resources for your Web App
42
+ resource serverfarm 'Microsoft.Web/serverfarms@2021-02-01' = {
43
+ kind: 'functionapp'
44
+ location: resourceGroup().location
45
+ name: serverfarmsName
46
+ sku: {
47
+ name: webAppSKU
48
+ }
49
+ }
50
+
51
+ // Web App that hosts your bot
52
+ resource functionApp 'Microsoft.Web/sites@2021-02-01' = {
53
+ kind: 'functionapp'
54
+ location: resourceGroup().location
55
+ name: webAppName
56
+ properties: {
57
+ serverFarmId: serverfarm.id
58
+ keyVaultReferenceIdentity: userAssignedIdentityId // Use given user assigned identity to access Key Vault
59
+ siteConfig: {
60
+ alwaysOn: true
61
+ appSettings: [
62
+ {
63
+ name: 'AzureWebJobsDashboard'
64
+ value: 'DefaultEndpointsProtocol=https;AccountName=${storage.name};AccountKey=${listKeys(storage.id, storage.apiVersion).keys[0].value};EndpointSuffix=${environment().suffixes.storage}' // Azure Functions internal setting
65
+ }
66
+ {
67
+ name: 'AzureWebJobsStorage'
68
+ value: 'DefaultEndpointsProtocol=https;AccountName=${storage.name};AccountKey=${listKeys(storage.id, storage.apiVersion).keys[0].value};EndpointSuffix=${environment().suffixes.storage}' // Azure Functions internal setting
69
+ }
70
+ {
71
+ name: 'FUNCTIONS_EXTENSION_VERSION'
72
+ value: '~3' // Use Azure Functions runtime v3
73
+ }
74
+ {
75
+ name: 'FUNCTIONS_WORKER_RUNTIME'
76
+ value: 'node' // Set runtime to NodeJS
77
+ }
78
+ {
79
+ name: 'WEBSITE_CONTENTAZUREFILECONNECTIONSTRING'
80
+ value: 'DefaultEndpointsProtocol=https;AccountName=${storage.name};AccountKey=${listKeys(storage.id, storage.apiVersion).keys[0].value};EndpointSuffix=${environment().suffixes.storage}' // Azure Functions internal setting
81
+ }
82
+ {
83
+ name: 'WEBSITE_RUN_FROM_PACKAGE'
84
+ value: '1' // Run Azure Functions from a package file
85
+ }
86
+ {
87
+ name: 'WEBSITE_NODE_DEFAULT_VERSION'
88
+ value: '~14' // Set NodeJS version to 14.x
89
+ }
90
+ {
91
+ name: 'RUNNING_ON_AZURE'
92
+ value: '1'
93
+ }
94
+ ]
95
+ }
96
+ }
97
+ identity: {
98
+ type: 'UserAssigned'
99
+ userAssignedIdentities: {
100
+ '${userAssignedIdentityId}': {} // The identity is used to access other Azure resources
101
+ }
102
+ }
103
+ }
104
+
105
+ // Azure Storage is required when creating Azure Functions instance
106
+ resource storage 'Microsoft.Storage/storageAccounts@2021-06-01' = {
107
+ name: storageName
108
+ kind: 'StorageV2'
109
+ location: resourceGroup().location
110
+ sku: {
111
+ name: storageSku // You can follow https://aka.ms/teamsfx-bicep-add-param-tutorial to add functionStorageSku property to provisionParameters to override the default value "Standard_LRS".
112
+ }
113
+ }
114
+
115
+ output botWebAppSKU string = webAppSKU
116
+ output botWebAppName string = webAppName
117
+ output botDomain string = functionApp.properties.defaultHostName
118
+ output appServicePlanName string = serverfarmsName
119
+ output botServiceName string = botServiceName
120
+ output botWebAppResourceId string = functionApp.id
121
+ output botWebAppEndpoint string = 'https://${functionApp.properties.defaultHostName}'