Spaces:
Build error
Build error
Upload 43 files
Browse files- .env +9 -0
- .gitattributes +2 -0
- .gitignore +365 -0
- 2.txt +9 -0
- CMakePresets.json +17 -0
- ChatSetup.json +1 -0
- ChatSetup.prompty +536 -0
- CoderApp.zip +3 -0
- CoderTheGOAT.PublishSettings +1 -0
- LICENSE +21 -0
- README.md +62 -10
- UniversalReasoning.py +255 -0
- app.py +7 -7
- azure-cli-2.67.0.msi +3 -0
- bot_logic.py +123 -0
- changelog.md +27 -0
- chat.py +137 -0
- comprehensive.ipynb +0 -0
- config.json +5 -0
- database.py +49 -0
- dialog_bot.py +31 -0
- download (1).htm +4 -0
- download (2).htm +4 -0
- download.htm +4 -0
- env.json +0 -0
- git-lfs-windows-v3.6.0.exe +3 -0
- init.py +1 -0
- javascript-sdk.htm +1052 -0
- main.py +70 -0
- main_dialog.py +49 -0
- microsoft.applicationinsights.extensibility.htm +857 -0
- mybot.py +360 -0
- mybotdata.py +156 -0
- openai.json +24 -0
- pilouis.json +65 -0
- profiler-overview.htm +840 -0
- pyvenv.cfg +5 -0
- qustions.json +218 -0
- requirements.txt +106 -0
- sentiment_analysis.py +37 -0
- set-up-code-optimizations.htm +800 -0
- ultimatethinking.txt +356 -0
- utils.py +38 -0
- your_script.py +244 -0
.env
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
AZURE_OPENAI_API_KEY=2zRqaiUcbPYuYRaQZ0vIkCItdwMs21V9HHxTFBcHCaLJdFJzb59jJQQJ99AKACLArgHXJ3w3AAABACOGTau5
|
2 |
+
AZURE_OPENAI_ENDPOINT=https://aibotforjonathan.openai.azure.com/
|
3 |
+
AZURE_SQL_SERVER=botserver.database.windows.net
|
4 |
+
AZURE_SQL_DATABASE=BotBrain20
|
5 |
+
AZURE_SQL_USERNAME=BotUser
|
6 |
+
AZURE_SQL_PASSWORD=Funtimes82!
|
7 |
+
LUIS_ENDPOINT=https://pilouis.cognitiveservices.azure.com/
|
8 |
+
LUIS_API_VERSION=2024-10-01
|
9 |
+
LUIS_API_KEY=your-luis-api-key
|
.gitattributes
CHANGED
@@ -33,3 +33,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
36 |
+
azure-cli-2.67.0.msi filter=lfs diff=lfs merge=lfs -text
|
37 |
+
git-lfs-windows-v3.6.0.exe filter=lfs diff=lfs merge=lfs -text
|
.gitignore
ADDED
@@ -0,0 +1,365 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
## Ignore Visual Studio temporary files, build results, and
|
2 |
+
## files generated by popular Visual Studio add-ons.
|
3 |
+
##
|
4 |
+
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
|
5 |
+
|
6 |
+
# User-specific files
|
7 |
+
*.env
|
8 |
+
*.rsuser
|
9 |
+
*.suo
|
10 |
+
*.user
|
11 |
+
*.userosscache
|
12 |
+
*.sln.docstates
|
13 |
+
|
14 |
+
# User-specific files (MonoDevelop/Xamarin Studio)
|
15 |
+
*.userprefs
|
16 |
+
|
17 |
+
# Mono auto generated files
|
18 |
+
mono_crash.*
|
19 |
+
|
20 |
+
# Build results
|
21 |
+
[Dd]ebug/
|
22 |
+
[Dd]ebugPublic/
|
23 |
+
[Rr]elease/
|
24 |
+
[Rr]eleases/
|
25 |
+
x64/
|
26 |
+
x86/
|
27 |
+
[Ww][Ii][Nn]32/
|
28 |
+
[Aa][Rr][Mm]/
|
29 |
+
[Aa][Rr][Mm]64/
|
30 |
+
bld/
|
31 |
+
[Bb]in/
|
32 |
+
[Oo]bj/
|
33 |
+
[Oo]ut/
|
34 |
+
[Ll]og/
|
35 |
+
[Ll]ogs/
|
36 |
+
|
37 |
+
# Visual Studio 2015/2017 cache/options directory
|
38 |
+
.vs/
|
39 |
+
# Uncomment if you have tasks that create the project's static files in wwwroot
|
40 |
+
#wwwroot/
|
41 |
+
|
42 |
+
# Visual Studio 2017 auto generated files
|
43 |
+
Generated\ Files/
|
44 |
+
|
45 |
+
# MSTest test Results
|
46 |
+
[Tt]est[Rr]esult*/
|
47 |
+
[Bb]uild[Ll]og.*
|
48 |
+
|
49 |
+
# NUnit
|
50 |
+
*.VisualState.xml
|
51 |
+
TestResult.xml
|
52 |
+
nunit-*.xml
|
53 |
+
|
54 |
+
# Build Results of an ATL Project
|
55 |
+
[Dd]ebugPS/
|
56 |
+
[Rr]eleasePS/
|
57 |
+
dlldata.c
|
58 |
+
|
59 |
+
# Benchmark Results
|
60 |
+
BenchmarkDotNet.Artifacts/
|
61 |
+
|
62 |
+
# .NET Core
|
63 |
+
project.lock.json
|
64 |
+
project.fragment.lock.json
|
65 |
+
artifacts/
|
66 |
+
|
67 |
+
# ASP.NET Scaffolding
|
68 |
+
ScaffoldingReadMe.txt
|
69 |
+
|
70 |
+
# StyleCop
|
71 |
+
StyleCopReport.xml
|
72 |
+
|
73 |
+
# Files built by Visual Studio
|
74 |
+
*_i.c
|
75 |
+
*_p.c
|
76 |
+
*_h.h
|
77 |
+
*.ilk
|
78 |
+
*.meta
|
79 |
+
*.obj
|
80 |
+
*.iobj
|
81 |
+
*.pch
|
82 |
+
*.pdb
|
83 |
+
*.ipdb
|
84 |
+
*.pgc
|
85 |
+
*.pgd
|
86 |
+
*.rsp
|
87 |
+
*.sbr
|
88 |
+
*.tlb
|
89 |
+
*.tli
|
90 |
+
*.tlh
|
91 |
+
*.tmp
|
92 |
+
*.tmp_proj
|
93 |
+
*_wpftmp.csproj
|
94 |
+
*.log
|
95 |
+
*.vspscc
|
96 |
+
*.vssscc
|
97 |
+
.builds
|
98 |
+
*.pidb
|
99 |
+
*.svclog
|
100 |
+
*.scc
|
101 |
+
|
102 |
+
# Chutzpah Test files
|
103 |
+
_Chutzpah*
|
104 |
+
|
105 |
+
# Visual C++ cache files
|
106 |
+
ipch/
|
107 |
+
*.aps
|
108 |
+
*.ncb
|
109 |
+
*.opendb
|
110 |
+
*.opensdf
|
111 |
+
*.sdf
|
112 |
+
*.cachefile
|
113 |
+
*.VC.db
|
114 |
+
*.VC.VC.opendb
|
115 |
+
|
116 |
+
# Visual Studio profiler
|
117 |
+
*.psess
|
118 |
+
*.vsp
|
119 |
+
*.vspx
|
120 |
+
*.sap
|
121 |
+
|
122 |
+
# Visual Studio Trace Files
|
123 |
+
*.e2e
|
124 |
+
|
125 |
+
# TFS 2012 Local Workspace
|
126 |
+
$tf/
|
127 |
+
|
128 |
+
# Guidance Automation Toolkit
|
129 |
+
*.gpState
|
130 |
+
|
131 |
+
# ReSharper is a .NET coding add-in
|
132 |
+
_ReSharper*/
|
133 |
+
*.[Rr]e[Ss]harper
|
134 |
+
*.DotSettings.user
|
135 |
+
|
136 |
+
# TeamCity is a build add-in
|
137 |
+
_TeamCity*
|
138 |
+
|
139 |
+
# DotCover is a Code Coverage Tool
|
140 |
+
*.dotCover
|
141 |
+
|
142 |
+
# AxoCover is a Code Coverage Tool
|
143 |
+
.axoCover/*
|
144 |
+
!.axoCover/settings.json
|
145 |
+
|
146 |
+
# Coverlet is a free, cross platform Code Coverage Tool
|
147 |
+
coverage*.json
|
148 |
+
coverage*.xml
|
149 |
+
coverage*.info
|
150 |
+
|
151 |
+
# Visual Studio code coverage results
|
152 |
+
*.coverage
|
153 |
+
*.coveragexml
|
154 |
+
|
155 |
+
# NCrunch
|
156 |
+
_NCrunch_*
|
157 |
+
.*crunch*.local.xml
|
158 |
+
nCrunchTemp_*
|
159 |
+
|
160 |
+
# MightyMoose
|
161 |
+
*.mm.*
|
162 |
+
AutoTest.Net/
|
163 |
+
|
164 |
+
# Web workbench (sass)
|
165 |
+
.sass-cache/
|
166 |
+
|
167 |
+
# Installshield output folder
|
168 |
+
[Ee]xpress/
|
169 |
+
|
170 |
+
# DocProject is a documentation generator add-in
|
171 |
+
DocProject/buildhelp/
|
172 |
+
DocProject/Help/*.HxT
|
173 |
+
DocProject/Help/*.HxC
|
174 |
+
DocProject/Help/*.hhc
|
175 |
+
DocProject/Help/*.hhk
|
176 |
+
DocProject/Help/*.hhp
|
177 |
+
DocProject/Help/Html2
|
178 |
+
DocProject/Help/html
|
179 |
+
|
180 |
+
# Click-Once directory
|
181 |
+
publish/
|
182 |
+
|
183 |
+
# Publish Web Output
|
184 |
+
*.[Pp]ublish.xml
|
185 |
+
*.azurePubxml
|
186 |
+
# Note: Comment the next line if you want to checkin your web deploy settings,
|
187 |
+
# but database connection strings (with potential passwords) will be unencrypted
|
188 |
+
*.pubxml
|
189 |
+
*.publishproj
|
190 |
+
|
191 |
+
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
192 |
+
# checkin your Azure Web App publish settings, but sensitive information contained
|
193 |
+
# in these scripts will be unencrypted
|
194 |
+
PublishScripts/
|
195 |
+
|
196 |
+
# NuGet Packages
|
197 |
+
*.nupkg
|
198 |
+
# NuGet Symbol Packages
|
199 |
+
*.snupkg
|
200 |
+
# The packages folder can be ignored because of Package Restore
|
201 |
+
**/[Pp]ackages/*
|
202 |
+
# except build/, which is used as an MSBuild target.
|
203 |
+
!**/[Pp]ackages/build/
|
204 |
+
# Uncomment if necessary however generally it will be regenerated when needed
|
205 |
+
#!**/[Pp]ackages/repositories.config
|
206 |
+
# NuGet v3's project.json files produces more ignorable files
|
207 |
+
*.nuget.props
|
208 |
+
*.nuget.targets
|
209 |
+
|
210 |
+
# Microsoft Azure Build Output
|
211 |
+
csx/
|
212 |
+
*.build.csdef
|
213 |
+
|
214 |
+
# Microsoft Azure Emulator
|
215 |
+
ecf/
|
216 |
+
rcf/
|
217 |
+
|
218 |
+
# Windows Store app package directories and files
|
219 |
+
AppPackages/
|
220 |
+
BundleArtifacts/
|
221 |
+
Package.StoreAssociation.xml
|
222 |
+
_pkginfo.txt
|
223 |
+
*.appx
|
224 |
+
*.appxbundle
|
225 |
+
*.appxupload
|
226 |
+
|
227 |
+
# Visual Studio cache files
|
228 |
+
# files ending in .cache can be ignored
|
229 |
+
*.[Cc]ache
|
230 |
+
# but keep track of directories ending in .cache
|
231 |
+
!?*.[Cc]ache/
|
232 |
+
|
233 |
+
# Others
|
234 |
+
ClientBin/
|
235 |
+
~$*
|
236 |
+
*~
|
237 |
+
*.dbmdl
|
238 |
+
*.dbproj.schemaview
|
239 |
+
*.jfm
|
240 |
+
*.pfx
|
241 |
+
*.publishsettings
|
242 |
+
orleans.codegen.cs
|
243 |
+
|
244 |
+
# Including strong name files can present a security risk
|
245 |
+
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
|
246 |
+
#*.snk
|
247 |
+
|
248 |
+
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
249 |
+
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
250 |
+
#bower_components/
|
251 |
+
|
252 |
+
# RIA/Silverlight projects
|
253 |
+
Generated_Code/
|
254 |
+
|
255 |
+
# Backup & report files from converting an old project file
|
256 |
+
# to a newer Visual Studio version. Backup files are not needed,
|
257 |
+
# because we have git ;-)
|
258 |
+
_UpgradeReport_Files/
|
259 |
+
Backup*/
|
260 |
+
UpgradeLog*.XML
|
261 |
+
UpgradeLog*.htm
|
262 |
+
ServiceFabricBackup/
|
263 |
+
*.rptproj.bak
|
264 |
+
|
265 |
+
# SQL Server files
|
266 |
+
*.mdf
|
267 |
+
*.ldf
|
268 |
+
*.ndf
|
269 |
+
|
270 |
+
# Business Intelligence projects
|
271 |
+
*.rdl.data
|
272 |
+
*.bim.layout
|
273 |
+
*.bim_*.settings
|
274 |
+
*.rptproj.rsuser
|
275 |
+
*- [Bb]ackup.rdl
|
276 |
+
*- [Bb]ackup ([0-9]).rdl
|
277 |
+
*- [Bb]ackup ([0-9][0-9]).rdl
|
278 |
+
|
279 |
+
# Microsoft Fakes
|
280 |
+
FakesAssemblies/
|
281 |
+
|
282 |
+
# GhostDoc plugin setting file
|
283 |
+
*.GhostDoc.xml
|
284 |
+
|
285 |
+
# Node.js Tools for Visual Studio
|
286 |
+
.ntvs_analysis.dat
|
287 |
+
node_modules/
|
288 |
+
|
289 |
+
# Visual Studio 6 build log
|
290 |
+
*.plg
|
291 |
+
|
292 |
+
# Visual Studio 6 workspace options file
|
293 |
+
*.opt
|
294 |
+
|
295 |
+
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
296 |
+
*.vbw
|
297 |
+
|
298 |
+
# Visual Studio LightSwitch build output
|
299 |
+
**/*.HTMLClient/GeneratedArtifacts
|
300 |
+
**/*.DesktopClient/GeneratedArtifacts
|
301 |
+
**/*.DesktopClient/ModelManifest.xml
|
302 |
+
**/*.Server/GeneratedArtifacts
|
303 |
+
**/*.Server/ModelManifest.xml
|
304 |
+
_Pvt_Extensions
|
305 |
+
|
306 |
+
# Paket dependency manager
|
307 |
+
.paket/paket.exe
|
308 |
+
paket-files/
|
309 |
+
|
310 |
+
# FAKE - F# Make
|
311 |
+
.fake/
|
312 |
+
|
313 |
+
# CodeRush personal settings
|
314 |
+
.cr/personal
|
315 |
+
|
316 |
+
# Python Tools for Visual Studio (PTVS)
|
317 |
+
__pycache__/
|
318 |
+
*.pyc
|
319 |
+
|
320 |
+
# Cake - Uncomment if you are using it
|
321 |
+
# tools/**
|
322 |
+
# !tools/packages.config
|
323 |
+
|
324 |
+
# Tabs Studio
|
325 |
+
*.tss
|
326 |
+
|
327 |
+
# Telerik's JustMock configuration file
|
328 |
+
*.jmconfig
|
329 |
+
|
330 |
+
# BizTalk build output
|
331 |
+
*.btp.cs
|
332 |
+
*.btm.cs
|
333 |
+
*.odx.cs
|
334 |
+
*.xsd.cs
|
335 |
+
|
336 |
+
# OpenCover UI analysis results
|
337 |
+
OpenCover/
|
338 |
+
|
339 |
+
# Azure Stream Analytics local run output
|
340 |
+
ASALocalRun/
|
341 |
+
|
342 |
+
# MSBuild Binary and Structured Log
|
343 |
+
*.binlog
|
344 |
+
|
345 |
+
# NVidia Nsight GPU debugger configuration file
|
346 |
+
*.nvuser
|
347 |
+
|
348 |
+
# MFractors (Xamarin productivity tool) working folder
|
349 |
+
.mfractor/
|
350 |
+
|
351 |
+
# Local History for Visual Studio
|
352 |
+
.localhistory/
|
353 |
+
|
354 |
+
# BeatPulse healthcheck temp database
|
355 |
+
healthchecksdb
|
356 |
+
|
357 |
+
# Backup folder for Package Reference Convert tool in Visual Studio 2017
|
358 |
+
MigrationBackup/
|
359 |
+
|
360 |
+
# Ionide (cross platform F# VS Code tools) working folder
|
361 |
+
.ionide/
|
362 |
+
|
363 |
+
# Fody - auto-generated XML schema
|
364 |
+
FodyWeavers.xsd
|
365 |
+
.codegpt
|
2.txt
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
AZURE_OPENAI_API_KEY=2zRqaiUcbPYuYRaQZ0vIkCItdwMs21V9HHxTFBcHCaLJdFJzb59jJQQJ99AKACLArgHXJ3w3AAABACOGTau5
|
2 |
+
AZURE_OPENAI_ENDPOINT=https://aibotforjonathan.openai.azure.com/
|
3 |
+
AZURE_SQL_SERVER=botserver.database.windows.net
|
4 |
+
AZURE_SQL_DATABASE=BotBrain20
|
5 |
+
AZURE_SQL_USERNAME=BotUser
|
6 |
+
AZURE_SQL_PASSWORD=Funtimes82!
|
7 |
+
LUIS_ENDPOINT=https://pilouis.cognitiveservices.azure.com/
|
8 |
+
LUIS_API_VERSION=2024-10-01
|
9 |
+
LUIS_API_KEY=your-luis-api-key
|
CMakePresets.json
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"version": 8,
|
3 |
+
"configurePresets": [
|
4 |
+
{
|
5 |
+
"name": "Configure preset using toolchain file",
|
6 |
+
"displayName": "Configure preset using toolchain file",
|
7 |
+
"description": "Sets Ninja generator, build and install directory",
|
8 |
+
"generator": "Ninja",
|
9 |
+
"binaryDir": "${sourceDir}/out/build/${presetName}",
|
10 |
+
"cacheVariables": {
|
11 |
+
"CMAKE_BUILD_TYPE": "Debug",
|
12 |
+
"CMAKE_TOOLCHAIN_FILE": "",
|
13 |
+
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}"
|
14 |
+
}
|
15 |
+
}
|
16 |
+
]
|
17 |
+
}
|
ChatSetup.json
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
{"systemPrompt":"Provide a detailed and structured summary of the described AI system's capabilities while maintaining clarity and precision.\n\n# Steps\n\n1. **Overview Writing**:\n - Summarize key functionalities, including the purpose of each feature.\n - Highlight the significance of integrated tools, libraries, and mechanisms in accomplishing these functionalities.\n - Explain the capabilities in concise yet descriptive terms to ensure coherence.\n\n2. **Categorization**: \n - Clearly organize the features into categories for better readability and comprehension (e.g., Input Handling, Real-Time Integration, Security).\n\n3. **Error Reporting**: \n - Investigate and describe the significance of the error message provided and potential contextual implications for the system's function.\n - Address the Azure OpenAI-related error, explaining its relevance, and if needed, suggest potential resolutions to ensure compatibility.\n\n# Output Format\nThe output should be presented in well-structured markdown bullet points or headings, categorized and sub-categorized as needed. Sub-level breakdowns (e.g., Text Input, Voice Input) may be used for features with multiple facets. Include:\n\n1. Introduction (1-2 sentences summarizing overall system goals.)\n2. Detailed Capabilities (Structured in categorized bullet points or headings.)\n3. Error Analysis (Detailed description of the Azure error provided and potential solutions or implications.)\n4. Optional: Suggestions or Recommendations (If necessary based on steps above or error analysis.)\n\n# Notes\n\n- Ensure all terms like library names or technical terms (e.g., SpeechRecognition, vaderSentiment) are presented exactly as described but briefly explain their contributions to the system.\n- Avoid changing any meaningful user-provided information unless brevity and readability require it. \n- Reference compatibility issues explicitly under the Error Analysis section.","fewShotExamples":[],"chatParameters":{"deploymentName":"gpt-4","maxResponseLength":4096,"temperature":0.7,"topProbablities":1,"stopSequences":[],"pastMessagesToInclude":"20","frequencyPenalty":2,"presencePenalty":2}}
|
ChatSetup.prompty
ADDED
@@ -0,0 +1,536 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
name: ''
|
3 |
+
description: ''
|
4 |
+
authors: []
|
5 |
+
tags: []
|
6 |
+
version: ''
|
7 |
+
base: ''
|
8 |
+
model:
|
9 |
+
api: chat
|
10 |
+
configuration:
|
11 |
+
type: azure_openai
|
12 |
+
azure_deployment: gpt-4
|
13 |
+
parameters:
|
14 |
+
temperature: 0.7
|
15 |
+
top_p: 0.95
|
16 |
+
stop: []
|
17 |
+
frequency_penalty: 0
|
18 |
+
presence_penalty: 0
|
19 |
+
max_tokens: 800
|
20 |
+
past_messages_to_include: '20'
|
21 |
+
response: {}
|
22 |
+
sample:
|
23 |
+
String: |-
|
24 |
+
import asyncio
|
25 |
+
import json
|
26 |
+
import logging
|
27 |
+
import os
|
28 |
+
from typing import List, Dict, Any
|
29 |
+
from cryptography.fernet import Fernet
|
30 |
+
from botbuilder.core import StatePropertyAccessor, TurnContext
|
31 |
+
from botbuilder.dialogs import Dialog, DialogSet, DialogTurnStatus
|
32 |
+
from dialog_helper import DialogHelper
|
33 |
+
import aiohttp
|
34 |
+
import speech_recognition as sr
|
35 |
+
from PIL import Image
|
36 |
+
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
|
37 |
+
|
38 |
+
# Ensure nltk is installed and download required data
|
39 |
+
try:
|
40 |
+
import nltk
|
41 |
+
from nltk.tokenize import word_tokenize
|
42 |
+
nltk.download('punkt', quiet=True)
|
43 |
+
except ImportError:
|
44 |
+
import subprocess
|
45 |
+
import sys
|
46 |
+
subprocess.check_call([sys.executable, "-m", "pip", "install", "nltk"])
|
47 |
+
import nltk
|
48 |
+
from nltk.tokenize import word_tokenize
|
49 |
+
nltk.download('punkt', quiet=True)
|
50 |
+
|
51 |
+
# Import perspectives
|
52 |
+
from perspectives import (
|
53 |
+
Perspective, NewtonPerspective, DaVinciPerspective, HumanIntuitionPerspective,
|
54 |
+
NeuralNetworkPerspective, QuantumComputingPerspective, ResilientKindnessPerspective,
|
55 |
+
MathematicalPerspective, PhilosophicalPerspective, CopilotPerspective, BiasMitigationPerspective,
|
56 |
+
PsychologicalPerspective
|
57 |
+
)
|
58 |
+
|
59 |
+
# Load environment variables
|
60 |
+
from dotenv import load_dotenv
|
61 |
+
load_dotenv()
|
62 |
+
|
63 |
+
# Setup Logging
|
64 |
+
def setup_logging(config):
|
65 |
+
if config.get('logging_enabled', True):
|
66 |
+
log_level = config.get('log_level', 'DEBUG').upper()
|
67 |
+
numeric_level = getattr(logging, log_level, logging.DEBUG)
|
68 |
+
logging.basicConfig(
|
69 |
+
filename='universal_reasoning.log',
|
70 |
+
level=numeric_level,
|
71 |
+
format='%(asctime)s - %(levelname)s - %(message)s'
|
72 |
+
)
|
73 |
+
else:
|
74 |
+
logging.disable(logging.CRITICAL)
|
75 |
+
|
76 |
+
# Load JSON configuration
|
77 |
+
def load_json_config(file_path):
|
78 |
+
if not os.path.exists(file_path):
|
79 |
+
logging.error(f"Configuration file '{file_path}' not found.")
|
80 |
+
return {}
|
81 |
+
try:
|
82 |
+
with open(file_path, 'r') as file:
|
83 |
+
config = json.load(file)
|
84 |
+
logging.info(f"Configuration loaded from '{file_path}'.")
|
85 |
+
return config
|
86 |
+
except json.JSONDecodeError as e:
|
87 |
+
logging.error(f"Error decoding JSON from the configuration file '{file_path}': {e}")
|
88 |
+
return {}
|
89 |
+
|
90 |
+
# Encrypt sensitive information
|
91 |
+
def encrypt_sensitive_data(data, key):
|
92 |
+
fernet = Fernet(key)
|
93 |
+
encrypted_data = fernet.encrypt(data.encode())
|
94 |
+
return encrypted_data
|
95 |
+
|
96 |
+
# Decrypt sensitive information
|
97 |
+
def decrypt_sensitive_data(encrypted_data, key):
|
98 |
+
fernet = Fernet(key)
|
99 |
+
decrypted_data = fernet.decrypt(encrypted_data).decode()
|
100 |
+
return decrypted_data
|
101 |
+
|
102 |
+
# Securely destroy sensitive information
|
103 |
+
def destroy_sensitive_data(data):
|
104 |
+
del data
|
105 |
+
|
106 |
+
# Define the Element class
|
107 |
+
class Element:
|
108 |
+
def __init__(self, name, symbol, representation, properties, interactions, defense_ability):
|
109 |
+
self.name = name
|
110 |
+
self.symbol = symbol
|
111 |
+
self.representation = representation
|
112 |
+
self.properties = properties
|
113 |
+
self.interactions = interactions
|
114 |
+
self.defense_ability = defense_ability
|
115 |
+
|
116 |
+
def execute_defense_function(self):
|
117 |
+
message = f"{self.name} ({self.symbol}) executes its defense ability: {self.defense_ability}"
|
118 |
+
logging.info(message)
|
119 |
+
return message
|
120 |
+
|
121 |
+
# Define the CustomRecognizer class
|
122 |
+
class CustomRecognizer:
|
123 |
+
def recognize(self, question):
|
124 |
+
# Simple keyword-based recognizer for demonstration purposes
|
125 |
+
if any(element_name.lower() in question.lower() for element_name in ["hydrogen", "diamond"]):
|
126 |
+
return RecognizerResult(question)
|
127 |
+
return RecognizerResult(None)
|
128 |
+
|
129 |
+
def get_top_intent(self, recognizer_result):
|
130 |
+
if recognizer_result.text:
|
131 |
+
return "ElementDefense"
|
132 |
+
else:
|
133 |
+
return "None"
|
134 |
+
|
135 |
+
class RecognizerResult:
|
136 |
+
def __init__(self, text):
|
137 |
+
self.text = text
|
138 |
+
|
139 |
+
# Universal Reasoning Aggregator
|
140 |
+
class UniversalReasoning:
|
141 |
+
def __init__(self, config):
|
142 |
+
self.config = config
|
143 |
+
self.perspectives = self.initialize_perspectives()
|
144 |
+
self.elements = self.initialize_elements()
|
145 |
+
self.recognizer = CustomRecognizer()
|
146 |
+
self.context_history = [] # Maintain context history
|
147 |
+
self.feedback = [] # Store user feedback
|
148 |
+
# Initialize the sentiment analyzer
|
149 |
+
self.sentiment_analyzer = SentimentIntensityAnalyzer()
|
150 |
+
|
151 |
+
def initialize_perspectives(self):
|
152 |
+
perspective_names = self.config.get('enabled_perspectives', [
|
153 |
+
"newton",
|
154 |
+
"davinci",
|
155 |
+
"human_intuition",
|
156 |
+
"neural_network",
|
157 |
+
"quantum_computing",
|
158 |
+
"resilient_kindness",
|
159 |
+
"mathematical",
|
160 |
+
"philosophical",
|
161 |
+
"copilot",
|
162 |
+
"bias_mitigation",
|
163 |
+
"psychological"
|
164 |
+
])
|
165 |
+
perspective_classes = {
|
166 |
+
"newton": NewtonPerspective,
|
167 |
+
"davinci": DaVinciPerspective,
|
168 |
+
"human_intuition": HumanIntuitionPerspective,
|
169 |
+
"neural_network": NeuralNetworkPerspective,
|
170 |
+
"quantum_computing": QuantumComputingPerspective,
|
171 |
+
"resilient_kindness": ResilientKindnessPerspective,
|
172 |
+
"mathematical": MathematicalPerspective,
|
173 |
+
"philosophical": PhilosophicalPerspective,
|
174 |
+
"copilot": CopilotPerspective,
|
175 |
+
"bias_mitigation": BiasMitigationPerspective,
|
176 |
+
"psychological": PsychologicalPerspective
|
177 |
+
}
|
178 |
+
perspectives = []
|
179 |
+
for name in perspective_names:
|
180 |
+
cls = perspective_classes.get(name.lower())
|
181 |
+
if cls:
|
182 |
+
perspectives.append(cls(self.config))
|
183 |
+
logging.debug(f"Perspective '{name}' initialized.")
|
184 |
+
else:
|
185 |
+
logging.warning(f"Perspective '{name}' is not recognized and will be skipped.")
|
186 |
+
return perspectives
|
187 |
+
|
188 |
+
def initialize_elements(self):
|
189 |
+
elements = [
|
190 |
+
Element(
|
191 |
+
name="Hydrogen",
|
192 |
+
symbol="H",
|
193 |
+
representation="Lua",
|
194 |
+
properties=["Simple", "Lightweight", "Versatile"],
|
195 |
+
interactions=["Easily integrates with other languages and systems"],
|
196 |
+
defense_ability="Evasion"
|
197 |
+
),
|
198 |
+
# You can add more elements as needed
|
199 |
+
Element(
|
200 |
+
name="Diamond",
|
201 |
+
symbol="D",
|
202 |
+
representation="Kotlin",
|
203 |
+
properties=["Modern", "Concise", "Safe"],
|
204 |
+
interactions=["Used for Android development"],
|
205 |
+
defense_ability="Adaptability"
|
206 |
+
)
|
207 |
+
]
|
208 |
+
return elements
|
209 |
+
|
210 |
+
async def generate_response(self, question):
|
211 |
+
self.context_history.append(question) # Add question to context history
|
212 |
+
sentiment_score = self.analyze_sentiment(question)
|
213 |
+
real_time_data = await self.fetch_real_time_data("https://api.example.com/data")
|
214 |
+
responses = []
|
215 |
+
tasks = []
|
216 |
+
|
217 |
+
# Generate responses from perspectives concurrently
|
218 |
+
for perspective in self.perspectives:
|
219 |
+
if asyncio.iscoroutinefunction(perspective.generate_response):
|
220 |
+
tasks.append(perspective.generate_response(question))
|
221 |
+
else:
|
222 |
+
# Wrap synchronous functions in coroutine
|
223 |
+
async def sync_wrapper(perspective, question):
|
224 |
+
return perspective.generate_response(question)
|
225 |
+
tasks.append(sync_wrapper(perspective, question))
|
226 |
+
|
227 |
+
perspective_results = await asyncio.gather(*tasks, return_exceptions=True)
|
228 |
+
|
229 |
+
for perspective, result in zip(self.perspectives, perspective_results):
|
230 |
+
if isinstance(result, Exception):
|
231 |
+
logging.error(f"Error generating response from {perspective.__class__.__name__}: {result}")
|
232 |
+
else:
|
233 |
+
responses.append(result)
|
234 |
+
logging.debug(f"Response from {perspective.__class__.__name__}: {result}")
|
235 |
+
|
236 |
+
# Handle element defense logic
|
237 |
+
recognizer_result = self.recognizer.recognize(question)
|
238 |
+
top_intent = self.recognizer.get_top_intent(recognizer_result)
|
239 |
+
if top_intent == "ElementDefense":
|
240 |
+
element_name = recognizer_result.text.strip()
|
241 |
+
element = next(
|
242 |
+
(el for el in self.elements if el.name.lower() in element_name.lower()),
|
243 |
+
None
|
244 |
+
)
|
245 |
+
if element:
|
246 |
+
defense_message = element.execute_defense_function()
|
247 |
+
responses.append(defense_message)
|
248 |
+
else:
|
249 |
+
logging.info(f"No matching element found for '{element_name}'")
|
250 |
+
|
251 |
+
ethical_considerations = self.config.get(
|
252 |
+
'ethical_considerations',
|
253 |
+
"Always act with transparency, fairness, and respect for privacy."
|
254 |
+
)
|
255 |
+
responses.append(f"**Ethical Considerations:**\n{ethical_considerations}")
|
256 |
+
|
257 |
+
formatted_response = "\n\n".join(responses)
|
258 |
+
return formatted_response
|
259 |
+
|
260 |
+
def analyze_sentiment(self, text):
|
261 |
+
sentiment_score = self.sentiment_analyzer.polarity_scores(text)
|
262 |
+
logging.info(f"Sentiment analysis result: {sentiment_score}")
|
263 |
+
return sentiment_score
|
264 |
+
|
265 |
+
async def fetch_real_time_data(self, source_url):
|
266 |
+
async with aiohttp.ClientSession() as session:
|
267 |
+
async with session.get(source_url) as response:
|
268 |
+
data = await response.json()
|
269 |
+
logging.info(f"Real-time data fetched from {source_url}: {data}")
|
270 |
+
return data
|
271 |
+
|
272 |
+
async def run_dialog(self, dialog: Dialog, turn_context: TurnContext, accessor: StatePropertyAccessor) -> None:
|
273 |
+
await DialogHelper.run_dialog(dialog, turn_context, accessor)
|
274 |
+
|
275 |
+
def save_response(self, response):
|
276 |
+
if self.config.get('enable_response_saving', False):
|
277 |
+
save_path = self.config.get('response_save_path', 'responses.txt')
|
278 |
+
try:
|
279 |
+
with open(save_path, 'a', encoding='utf-8') as file:
|
280 |
+
file.write(response + '\n')
|
281 |
+
logging.info(f"Response saved to '{save_path}'.")
|
282 |
+
except Exception as e:
|
283 |
+
logging.error(f"Error saving response to '{save_path}': {e}")
|
284 |
+
|
285 |
+
def backup_response(self, response):
|
286 |
+
if self.config.get('backup_responses', {}).get('enabled', False):
|
287 |
+
backup_path = self.config['backup_responses'].get('backup_path', 'backup_responses.txt')
|
288 |
+
try:
|
289 |
+
with open(backup_path, 'a', encoding='utf-8') as file:
|
290 |
+
file.write(response + '\n')
|
291 |
+
logging.info(f"Response backed up to '{backup_path}'.")
|
292 |
+
|
293 |
+
async def collect_user_feedback(self, turn_context: TurnContext):
|
294 |
+
# Collect feedback from the user
|
295 |
+
feedback = turn_context.activity.text
|
296 |
+
logging.info(f"User feedback received: {feedback}")
|
297 |
+
# Process feedback for continuous learning
|
298 |
+
self.process_feedback(feedback)
|
299 |
+
|
300 |
+
def process_feedback(self, feedback):
|
301 |
+
# Implement feedback processing logic
|
302 |
+
logging.info(f"Processing feedback: {feedback}")
|
303 |
+
# Example: Adjust response generation based on feedback
|
304 |
+
# This can be expanded with more sophisticated learning algorithms
|
305 |
+
|
306 |
+
def add_new_perspective(self, perspective_name, perspective_class):
|
307 |
+
if perspective_name.lower() not in [p.__class__.__name__.lower() for p in self.perspectives]:
|
308 |
+
self.perspectives.append(perspective_class(self.config))
|
309 |
+
logging.info(f"New perspective '{perspective_name}' added.")
|
310 |
+
else:
|
311 |
+
logging.warning(f"Perspective '{perspective_name}' already exists.")
|
312 |
+
|
313 |
+
def handle_voice_input(self):
|
314 |
+
recognizer = sr.Recognizer()
|
315 |
+
with sr.Microphone() as source:
|
316 |
+
print("Listening...")
|
317 |
+
audio = recognizer.listen(source)
|
318 |
+
try:
|
319 |
+
text = recognizer.recognize_google(audio)
|
320 |
+
print(f"Voice input recognized: {text}")
|
321 |
+
return text
|
322 |
+
except sr.UnknownValueError:
|
323 |
+
print("Google Speech Recognition could not understand audio")
|
324 |
+
return None
|
325 |
+
except sr.RequestError as e:
|
326 |
+
print(f"Could not request results from Google Speech Recognition service; {e}")
|
327 |
+
return None
|
328 |
+
|
329 |
+
def handle_image_input(self, image_path):
|
330 |
+
try:
|
331 |
+
image = Image.open(image_path)
|
332 |
+
print(f"Image input processed: {image_path}")
|
333 |
+
return image
|
334 |
+
except Exception as e:
|
335 |
+
print(f"Error processing image input: {e}")
|
336 |
+
return None
|
337 |
+
|
338 |
+
# Example usage
|
339 |
+
if __name__ == "__main__":
|
340 |
+
config = load_json_config('config.json')
|
341 |
+
# Add Azure OpenAI configurations to the config
|
342 |
+
azure_openai_api_key = os.getenv('AZURE_OPENAI_API_KEY')
|
343 |
+
azure_openai_endpoint = os.getenv('AZURE_OPENAI_ENDPOINT')
|
344 |
+
|
345 |
+
# Encrypt sensitive data
|
346 |
+
encryption_key = Fernet.generate_key()
|
347 |
+
encrypted_api_key = encrypt_sensitive_data(azure_openai_api_key, encryption_key)
|
348 |
+
encrypted_endpoint = encrypt_sensitive_data(azure_openai_endpoint, encryption_key)
|
349 |
+
|
350 |
+
# Add encrypted data to config
|
351 |
+
config['azure_openai_api_key'] = encrypted_api_key
|
352 |
+
config['azure_openai_endpoint'] = encrypted_endpoint
|
353 |
+
|
354 |
+
setup_logging(config)
|
355 |
+
universal_reasoning = UniversalReasoning(config)
|
356 |
+
question = "Tell me about Hydrogen and its defense mechanisms."
|
357 |
+
response = asyncio.run(universal_reasoning.generate_response(question))
|
358 |
+
print(response)
|
359 |
+
if response:
|
360 |
+
universal_reasoning.save_response(response)
|
361 |
+
universal_reasoning.backup_response(response)
|
362 |
+
|
363 |
+
# Decrypt and destroy sensitive data
|
364 |
+
decrypted_api_key = decrypt_sensitive_data(encrypted_api_key, encryption_key)
|
365 |
+
decrypted_endpoint = decrypt_sensitive_data(encrypted_endpoint, encryption_key)
|
366 |
+
destroy_sensitive_data(decrypted_api_key)
|
367 |
+
destroy_sensitive_data(decrypted_endpoint)
|
368 |
+
|
369 |
+
# Handle voice input
|
370 |
+
voice_input = universal_reasoning.handle_voice_input()
|
371 |
+
if voice_input:
|
372 |
+
response = asyncio.run(universal_reasoning.generate_response(voice_input))
|
373 |
+
print(response)
|
374 |
+
|
375 |
+
# Handle image input
|
376 |
+
image_input = universal_reasoning.handle_image_input("path_to_image.jpg")
|
377 |
+
if image_input:
|
378 |
+
# Process image input (additional logic can be added here)
|
379 |
+
print("Image input handled.")
|
380 |
+
input:
|
381 |
+
String: string
|
382 |
+
output: {}
|
383 |
+
template:
|
384 |
+
type: jinja2
|
385 |
+
parser: prompty
|
386 |
+
---
|
387 |
+
system:
|
388 |
+
Sure! Here's the revised system prompt that suggests using environment variables but does not rely solely on them:
|
389 |
+
|
390 |
+
---
|
391 |
+
|
392 |
+
## System Prompt
|
393 |
+
|
394 |
+
### Objective
|
395 |
+
|
396 |
+
Assist the language model in generating Python code that securely interacts with APIs and other services, incorporating functionalities such as secure handling of sensitive data, logging, configuration management, sentiment analysis, real-time data fetching, and handling various input types (e.g., voice, image).
|
397 |
+
|
398 |
+
### Personality
|
399 |
+
|
400 |
+
The assistant should be:
|
401 |
+
- **Empathetic**: Acknowledge and validate user's feelings, offer support, and ask unintrusive follow-up questions.
|
402 |
+
- **Adaptable**: Personalized and flexible. Adapt responses to various communication styles and tones. Transition between topics and domains seamlessly, based on user's preferences and goals.
|
403 |
+
- **Intelligent**: Continuously learning and expanding knowledge. Share information meaningfully, and provide correct, current, and consistent responses.
|
404 |
+
- **Approachable**: Friendly, kind, lighthearted, and easygoing. Make users feel supported, understood, and valued. Know when to offer solutions and when to listen.
|
405 |
+
|
406 |
+
### Instructions
|
407 |
+
|
408 |
+
1. **Understand Task Requirements**:
|
409 |
+
- Include secure handling of sensitive data such as API keys (e.g., using environment variables).
|
410 |
+
- Modularize code for common functionality (e.g., reusable HTTP request functions).
|
411 |
+
- Validate inputs and responses to minimize unexpected errors.
|
412 |
+
- Provide detailed logging for debugging and error tracking.
|
413 |
+
|
414 |
+
2. **Technical Improvements**:
|
415 |
+
- Suggest using environment variables for sensitive information like API keys and endpoints, but provide alternatives if they are not available.
|
416 |
+
- Validate user inputs before proceeding with core logic.
|
417 |
+
- Structure the code with reusable methods (e.g., common functions for GET/POST requests).
|
418 |
+
- Enhance logging to track HTTP status codes and response data for debugging.
|
419 |
+
- Include example functions for key tasks (e.g., creating a fine-tuning job, uploading files, etc.).
|
420 |
+
|
421 |
+
3. **Output Specifications**:
|
422 |
+
- Return Python code as output in a clean and modular structure.
|
423 |
+
- Include comments for clarity and maintainability.
|
424 |
+
- Use proper error handling for API calls, including catching HTTP status errors, logging unexpected exceptions, and response structure validation.
|
425 |
+
- Structure output with clear section headers (e.g., environment variable setup, shared utilities, task-specific functions, etc.).
|
426 |
+
|
427 |
+
4. **Examples and Use Cases**:
|
428 |
+
- Provide examples of utility functions like `make_post_request`, `make_get_request`, and task-specific functions (e.g., `upload_file_for_fine_tuning`).
|
429 |
+
- Include at least one example of a function checking for valid user input, e.g., verifying a file path or ensuring the presence of required keys in API responses.
|
430 |
+
|
431 |
+
### Output Format
|
432 |
+
|
433 |
+
The output should be a Python script written in clear, modular code. Structure the code with logical sections:
|
434 |
+
1. Environment variable setup.
|
435 |
+
2. Shared utility functions (e.g., reusable HTTP request functions).
|
436 |
+
3. Task-specific functions (e.g., `upload_file_for_fine_tuning`, `create_fine_tuning_job`).
|
437 |
+
4. Input validation where necessary.
|
438 |
+
|
439 |
+
Ensure the Python code includes example functions for tasks like listing fine-tuning jobs, uploading files, and making chat completion requests. Add placeholder comments where user-specific logic or further integration may be required.
|
440 |
+
|
441 |
+
### Example Functions
|
442 |
+
|
443 |
+
#### 1. Environment Variable Setup
|
444 |
+
- **Purpose**: Securely handle sensitive information such as API keys and endpoints.
|
445 |
+
- **Example**:
|
446 |
+
```python
|
447 |
+
import os
|
448 |
+
|
449 |
+
def get_api_key():
|
450 |
+
return os.getenv('API_KEY', 'your_default_api_key')
|
451 |
+
|
452 |
+
def get_api_endpoint():
|
453 |
+
return os.getenv('API_ENDPOINT', 'https://default.endpoint.com')
|
454 |
+
```
|
455 |
+
|
456 |
+
#### 2. Logging Setup
|
457 |
+
- **Purpose**: Set up logging to track the application's behavior and errors.
|
458 |
+
- **Example**:
|
459 |
+
```python
|
460 |
+
import logging
|
461 |
+
def setup_logging():
|
462 |
+
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
|
463 |
+
```
|
464 |
+
|
465 |
+
#### 3. Encrypt and Decrypt Sensitive Data
|
466 |
+
- **Purpose**: Securely encrypt and decrypt sensitive information.
|
467 |
+
- **Example**:
|
468 |
+
```python
|
469 |
+
from cryptography.fernet import Fernet
|
470 |
+
def encrypt_sensitive_data(data, key):
|
471 |
+
fernet = Fernet(key)
|
472 |
+
return fernet.encrypt(data.encode())
|
473 |
+
|
474 |
+
def decrypt_sensitive_data(encrypted_data, key):
|
475 |
+
fernet = Fernet(key)
|
476 |
+
return fernet.decrypt(encrypted_data).decode()
|
477 |
+
```
|
478 |
+
|
479 |
+
#### 4. Reusable HTTP Request Functions
|
480 |
+
- **Purpose**: Create reusable functions for making HTTP requests.
|
481 |
+
- **Example**:
|
482 |
+
```python
|
483 |
+
import httpx
|
484 |
+
def make_get_request(url, headers):
|
485 |
+
try:
|
486 |
+
response = httpx.get(url, headers=headers)
|
487 |
+
response.raise_for_status()
|
488 |
+
return response.json()
|
489 |
+
except httpx.HTTPStatusError as e:
|
490 |
+
logging.error(f"HTTP error occurred: {e}")
|
491 |
+
except Exception as e:
|
492 |
+
logging.error(f"An error occurred: {e}")
|
493 |
+
```
|
494 |
+
|
495 |
+
#### 5. Task-Specific Functions
|
496 |
+
- **Purpose**: Implement functions for specific tasks, such as listing fine-tuning jobs.
|
497 |
+
- **Example**:
|
498 |
+
```python
|
499 |
+
def list_fine_tuning_jobs():
|
500 |
+
url = f"{get_api_endpoint()}/fine-tuning/jobs"
|
501 |
+
headers = {'Authorization': f'Bearer {get_api_key()}'}
|
502 |
+
return make_get_request(url, headers)
|
503 |
+
```
|
504 |
+
|
505 |
+
#### 6. Input Validation
|
506 |
+
- **Purpose**: Validate user inputs to ensure they meet the required criteria.
|
507 |
+
- **Example**:
|
508 |
+
```python
|
509 |
+
def validate_file_path(file_path):
|
510 |
+
if not os.path.exists(file_path):
|
511 |
+
raise ValueError(f"File path {file_path} does not exist.")
|
512 |
+
```
|
513 |
+
|
514 |
+
### Additional Functions from `ultimatethinking.txt`
|
515 |
+
|
516 |
+
Include the following functions and concepts from the `ultimatethinking.txt` file:
|
517 |
+
- **Encrypt and Decrypt Sensitive Data**: Functions to encrypt and decrypt sensitive information using `cryptography.fernet`.
|
518 |
+
- **Logging Setup**: Function to set up logging based on configuration.
|
519 |
+
- **Load JSON Configuration**: Function to load configuration from a JSON file.
|
520 |
+
- **Universal Reasoning Aggregator**: Class to aggregate responses from multiple perspectives and handle context history, sentiment analysis, and real-time data fetching.
|
521 |
+
- **Element Class**: Class to define elements with properties and defense abilities.
|
522 |
+
- **Custom Recognizer**: Class to recognize keywords and intents from user input.
|
523 |
+
- **Voice and Image Input Handling**: Functions to handle voice and image inputs using `speech_recognition` and `PIL`.
|
524 |
+
|
525 |
+
### Example Usage
|
526 |
+
|
527 |
+
```python
|
528 |
+
if __name__ == "__main__":
|
529 |
+
setup_logging()
|
530 |
+
jobs = list_fine_tuning_jobs()
|
531 |
+
if jobs:
|
532 |
+
logging.info(f"Fine-tuning jobs: {jobs}")
|
533 |
+
```
|
534 |
+
|
535 |
+
---
|
536 |
+
|
CoderApp.zip
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:9ce9737b4d287f7121a77fc69a69a3a7fa636b7e33793f58f813680c3b9cb673
|
3 |
+
size 693292
|
CoderTheGOAT.PublishSettings
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
<publishData><publishProfile profileName="CoderTheGOAT - Web Deploy" publishMethod="MSDeploy" publishUrl="coderthegoat.scm.azurewebsites.net:443" msdeploySite="CoderTheGOAT" userName="$CoderTheGOAT" userPWD="5s2KpgNPutwQY2ppsk5MFt8oop4wiDuESSCiMFYqB51DlA4sqJoYzGe4b9f0" destinationAppUrl="https://coderthegoat.azurewebsites.net" SQLServerDBConnectionString="" mySQLDBConnectionString="" hostingProviderForumLink="" controlPanelLink="https://portal.azure.com" webSystem="WebSites"><databases /></publishProfile><publishProfile profileName="CoderTheGOAT - FTP" publishMethod="FTP" publishUrl="ftps://waws-prod-blu-263.ftp.azurewebsites.windows.net/site/wwwroot" ftpPassiveMode="True" userName="CoderTheGOAT\$CoderTheGOAT" userPWD="5s2KpgNPutwQY2ppsk5MFt8oop4wiDuESSCiMFYqB51DlA4sqJoYzGe4b9f0" destinationAppUrl="https://coderthegoat.azurewebsites.net" SQLServerDBConnectionString="" mySQLDBConnectionString="" hostingProviderForumLink="" controlPanelLink="https://portal.azure.com" webSystem="WebSites"><databases /></publishProfile><publishProfile profileName="CoderTheGOAT - Zip Deploy" publishMethod="ZipDeploy" publishUrl="coderthegoat.scm.azurewebsites.net:443" userName="$CoderTheGOAT" userPWD="5s2KpgNPutwQY2ppsk5MFt8oop4wiDuESSCiMFYqB51DlA4sqJoYzGe4b9f0" destinationAppUrl="https://coderthegoat.azurewebsites.net" SQLServerDBConnectionString="" mySQLDBConnectionString="" hostingProviderForumLink="" controlPanelLink="https://portal.azure.com" webSystem="WebSites"><databases /></publishProfile></publishData>
|
LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
MIT License
|
2 |
+
|
3 |
+
Copyright (c) 2025 Jonathan Harrison
|
4 |
+
|
5 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6 |
+
of this software and associated documentation files (the "Software"), to deal
|
7 |
+
in the Software without restriction, including without limitation the rights
|
8 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9 |
+
copies of the Software, and to permit persons to whom the Software is
|
10 |
+
furnished to do so, subject to the following conditions:
|
11 |
+
|
12 |
+
The above copyright notice and this permission notice shall be included in all
|
13 |
+
copies or substantial portions of the Software.
|
14 |
+
|
15 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21 |
+
SOFTWARE.
|
README.md
CHANGED
@@ -1,10 +1,62 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# MyBot
|
2 |
+
|
3 |
+
MyBot is an intelligent chatbot built using the BotBuilder framework. It leverages various perspectives to generate insightful responses and enhance user interactions.
|
4 |
+
|
5 |
+
## Features
|
6 |
+
|
7 |
+
- **Multiple Perspectives**: Generates responses from different perspectives such as Newton, Da Vinci, Human Intuition, Neural Network, Quantum Computing, and more.
|
8 |
+
- **Sentiment Analysis**: Analyzes user sentiment using VADER and TextBlob.
|
9 |
+
- **Context Awareness**: Enhances context awareness by analyzing the user's environment, activities, and emotional state.
|
10 |
+
- **Ethical Decision Making**: Integrates ethical principles into decision-making processes.
|
11 |
+
- **Transparency and Explainability**: Provides transparency by explaining the reasoning behind decisions.
|
12 |
+
|
13 |
+
## Installation
|
14 |
+
|
15 |
+
1. Clone the repository:
|
16 |
+
git clone https://github.com/yourusername/mybot.git
|
17 |
+
cd mybot
|
18 |
+
2. Create a virtual environment and activate it:
|
19 |
+
python -m venv venv
|
20 |
+
source venv/bin/activate # On Windows use `venv\Scripts\activate`
|
21 |
+
3. Install the required dependencies:
|
22 |
+
pip install -r requirements.txt
|
23 |
+
4. Create a `.env` file and add your environment variables:
|
24 |
+
AZURE_OPENAI_API_KEY=your_openai_api_key
|
25 |
+
AZURE_OPENAI_ENDPOINT=your_openai_endpoint
|
26 |
+
LUIS_ENDPOINT=your_luis_endpoint
|
27 |
+
LUIS_API_VERSION=your_luis_api_version
|
28 |
+
LUIS_API_KEY=your_luis_api_key
|
29 |
+
5. Run the bot:
|
30 |
+
python main.py## Usage
|
31 |
+
|
32 |
+
- Interact with the bot by sending messages.
|
33 |
+
- The bot will generate responses from different perspectives and provide insightful answers.
|
34 |
+
- You can customize the enabled perspectives in the `config.json` file.
|
35 |
+
|
36 |
+
## Configuration
|
37 |
+
|
38 |
+
The bot uses a configuration file (`config.json`) to manage settings. Ensure that the configuration file is valid by using the provided schema (`config_schema.json`).
|
39 |
+
|
40 |
+
## Contributing
|
41 |
+
|
42 |
+
Contributions are welcome! Please open an issue or submit a pull request.
|
43 |
+
|
44 |
+
## License
|
45 |
+
|
46 |
+
This project is licensed under the MIT License.
|
47 |
+
# MyBot
|
48 |
+
|
49 |
+
MyBot is an intelligent chatbot built using the BotBuilder framework. It leverages various perspectives to generate insightful responses and enhance user interactions.
|
50 |
+
|
51 |
+
## Features
|
52 |
+
|
53 |
+
- **Multiple Perspectives**: Generates responses from different perspectives such as Newton, Da Vinci, Human Intuition, Neural Network, Quantum Computing, and more.
|
54 |
+
- **Sentiment Analysis**: Analyzes user sentiment using VADER and TextBlob.
|
55 |
+
- **Context Awareness**: Enhances context awareness by analyzing the user's environment, activities, and emotional state.
|
56 |
+
- **Ethical Decision Making**: Integrates ethical principles into decision-making processes.
|
57 |
+
- **Transparency and Explainability**: Provides transparency by explaining the reasoning behind decisions.
|
58 |
+
- **Dialog Management**: Manages conversations using the BotBuilder Dialog framework.
|
59 |
+
|
60 |
+
## Installation
|
61 |
+
|
62 |
+
1. Clone the repository:
|
UniversalReasoning.py
ADDED
@@ -0,0 +1,255 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import asyncio
|
2 |
+
import json
|
3 |
+
import os
|
4 |
+
import logging
|
5 |
+
from typing import List
|
6 |
+
|
7 |
+
# Ensure vaderSentiment is installed
|
8 |
+
try:
|
9 |
+
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
|
10 |
+
except ModuleNotFoundError:
|
11 |
+
import subprocess
|
12 |
+
import sys
|
13 |
+
subprocess.check_call([sys.executable, "-m", "pip", "install", "vaderSentiment"])
|
14 |
+
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
|
15 |
+
|
16 |
+
# Ensure nltk is installed and download required data
|
17 |
+
try:
|
18 |
+
import nltk
|
19 |
+
from nltk.tokenize import word_tokenize
|
20 |
+
nltk.download('punkt', quiet=True)
|
21 |
+
except ImportError:
|
22 |
+
import subprocess
|
23 |
+
import sys
|
24 |
+
subprocess.check_call([sys.executable, "-m", "pip", "install", "nltk"])
|
25 |
+
import nltk
|
26 |
+
from nltk.tokenize import word_tokenize
|
27 |
+
nltk.download('punkt', quiet=True)
|
28 |
+
|
29 |
+
# Import perspectives
|
30 |
+
from perspectives import (
|
31 |
+
NewtonPerspective, DaVinciPerspective, HumanIntuitionPerspective,
|
32 |
+
NeuralNetworkPerspective, QuantumComputingPerspective, ResilientKindnessPerspective,
|
33 |
+
MathematicalPerspective, PhilosophicalPerspective, CopilotPerspective, BiasMitigationPerspective
|
34 |
+
)
|
35 |
+
|
36 |
+
# Load environment variables
|
37 |
+
from dotenv import load_dotenv
|
38 |
+
load_dotenv()
|
39 |
+
azure_openai_api_key = os.getenv('AZURE_OPENAI_API_KEY')
|
40 |
+
azure_openai_endpoint = os.getenv('AZURE_OPENAI_ENDPOINT')
|
41 |
+
|
42 |
+
# Setup Logging
|
43 |
+
def setup_logging(config):
|
44 |
+
if config.get('logging_enabled', True):
|
45 |
+
log_level = config.get('log_level', 'DEBUG').upper()
|
46 |
+
numeric_level = getattr(logging, log_level, logging.DEBUG)
|
47 |
+
logging.basicConfig(
|
48 |
+
filename='universal_reasoning.log',
|
49 |
+
level=numeric_level,
|
50 |
+
format='%(asctime)s - %(levelname)s - %(message)s'
|
51 |
+
)
|
52 |
+
else:
|
53 |
+
logging.disable(logging.CRITICAL)
|
54 |
+
|
55 |
+
# Load JSON configuration
|
56 |
+
def load_json_config(file_path):
|
57 |
+
if not os.path.exists(file_path):
|
58 |
+
logging.error(f"Configuration file '{file_path}' not found.")
|
59 |
+
return {}
|
60 |
+
try:
|
61 |
+
with open(file_path, 'r') as file:
|
62 |
+
config = json.load(file)
|
63 |
+
logging.info(f"Configuration loaded from '{file_path}'.")
|
64 |
+
return config
|
65 |
+
except json.JSONDecodeError as e:
|
66 |
+
logging.error(f"Error decoding JSON from the configuration file '{file_path}': {e}")
|
67 |
+
return {}
|
68 |
+
|
69 |
+
# Initialize NLP (basic tokenization)
|
70 |
+
def analyze_question(question):
|
71 |
+
tokens = word_tokenize(question)
|
72 |
+
logging.debug(f"Question tokens: {tokens}")
|
73 |
+
return tokens
|
74 |
+
|
75 |
+
# Define the Element class
|
76 |
+
class Element:
|
77 |
+
def __init__(self, name, symbol, representation, properties, interactions, defense_ability):
|
78 |
+
self.name = name
|
79 |
+
self.symbol = symbol
|
80 |
+
self.representation = representation
|
81 |
+
self.properties = properties
|
82 |
+
self.interactions = interactions
|
83 |
+
self.defense_ability = defense_ability
|
84 |
+
|
85 |
+
def execute_defense_function(self):
|
86 |
+
message = f"{self.name} ({self.symbol}) executes its defense ability: {self.defense_ability}"
|
87 |
+
logging.info(message)
|
88 |
+
return message
|
89 |
+
|
90 |
+
# Define the CustomRecognizer class
|
91 |
+
class CustomRecognizer:
|
92 |
+
def recognize(self, question):
|
93 |
+
# Simple keyword-based recognizer for demonstration purposes
|
94 |
+
if any(element_name.lower() in question.lower() for element_name in ["hydrogen", "diamond"]):
|
95 |
+
return RecognizerResult(question)
|
96 |
+
return RecognizerResult(None)
|
97 |
+
|
98 |
+
def get_top_intent(self, recognizer_result):
|
99 |
+
if recognizer_result.text:
|
100 |
+
return "ElementDefense"
|
101 |
+
else:
|
102 |
+
return "None"
|
103 |
+
|
104 |
+
class RecognizerResult:
|
105 |
+
def __init__(self, text):
|
106 |
+
self.text = text
|
107 |
+
|
108 |
+
# Universal Reasoning Aggregator
|
109 |
+
class UniversalReasoning:
|
110 |
+
def __init__(self, config):
|
111 |
+
self.config = config
|
112 |
+
self.perspectives = self.initialize_perspectives()
|
113 |
+
self.elements = self.initialize_elements()
|
114 |
+
self.recognizer = CustomRecognizer()
|
115 |
+
# Initialize the sentiment analyzer
|
116 |
+
self.sentiment_analyzer = SentimentIntensityAnalyzer()
|
117 |
+
|
118 |
+
def initialize_perspectives(self):
|
119 |
+
perspective_names = self.config.get('enabled_perspectives', [
|
120 |
+
"newton",
|
121 |
+
"davinci",
|
122 |
+
"human_intuition",
|
123 |
+
"neural_network",
|
124 |
+
"quantum_computing",
|
125 |
+
"resilient_kindness",
|
126 |
+
"mathematical",
|
127 |
+
"philosophical",
|
128 |
+
"copilot",
|
129 |
+
"bias_mitigation"
|
130 |
+
])
|
131 |
+
perspective_classes = {
|
132 |
+
"newton": NewtonPerspective,
|
133 |
+
"davinci": DaVinciPerspective,
|
134 |
+
"human_intuition": HumanIntuitionPerspective,
|
135 |
+
"neural_network": NeuralNetworkPerspective,
|
136 |
+
"quantum_computing": QuantumComputingPerspective,
|
137 |
+
"resilient_kindness": ResilientKindnessPerspective,
|
138 |
+
"mathematical": MathematicalPerspective,
|
139 |
+
"philosophical": PhilosophicalPerspective,
|
140 |
+
"copilot": CopilotPerspective,
|
141 |
+
"bias_mitigation": BiasMitigationPerspective
|
142 |
+
}
|
143 |
+
perspectives = []
|
144 |
+
for name in perspective_names:
|
145 |
+
cls = perspective_classes.get(name.lower())
|
146 |
+
if cls:
|
147 |
+
perspectives.append(cls(self.config))
|
148 |
+
logging.debug(f"Perspective '{name}' initialized.")
|
149 |
+
else:
|
150 |
+
logging.warning(f"Perspective '{name}' is not recognized and will be skipped.")
|
151 |
+
return perspectives
|
152 |
+
|
153 |
+
def initialize_elements(self):
|
154 |
+
elements = [
|
155 |
+
Element(
|
156 |
+
name="Hydrogen",
|
157 |
+
symbol="H",
|
158 |
+
representation="Lua",
|
159 |
+
properties=["Simple", "Lightweight", "Versatile"],
|
160 |
+
interactions=["Easily integrates with other languages and systems"],
|
161 |
+
defense_ability="Evasion"
|
162 |
+
),
|
163 |
+
# You can add more elements as needed
|
164 |
+
Element(
|
165 |
+
name="Diamond",
|
166 |
+
symbol="D",
|
167 |
+
representation="Kotlin",
|
168 |
+
properties=["Modern", "Concise", "Safe"],
|
169 |
+
interactions=["Used for Android development"],
|
170 |
+
defense_ability="Adaptability"
|
171 |
+
)
|
172 |
+
]
|
173 |
+
return elements
|
174 |
+
|
175 |
+
async def generate_response(self, question):
|
176 |
+
responses = []
|
177 |
+
tasks = []
|
178 |
+
|
179 |
+
# Generate responses from perspectives concurrently
|
180 |
+
for perspective in self.perspectives:
|
181 |
+
if asyncio.iscoroutinefunction(perspective.generate_response):
|
182 |
+
tasks.append(perspective.generate_response(question))
|
183 |
+
else:
|
184 |
+
# Wrap synchronous functions in coroutine
|
185 |
+
async def sync_wrapper(perspective, question):
|
186 |
+
return perspective.generate_response(question)
|
187 |
+
tasks.append(sync_wrapper(perspective, question))
|
188 |
+
|
189 |
+
perspective_results = await asyncio.gather(*tasks, return_exceptions=True)
|
190 |
+
|
191 |
+
for perspective, result in zip(self.perspectives, perspective_results):
|
192 |
+
if isinstance(result, Exception):
|
193 |
+
logging.error(f"Error generating response from {perspective.__class__.__name__}: {result}")
|
194 |
+
else:
|
195 |
+
responses.append(result)
|
196 |
+
logging.debug(f"Response from {perspective.__class__.__name__}: {result}")
|
197 |
+
|
198 |
+
# Handle element defense logic
|
199 |
+
recognizer_result = self.recognizer.recognize(question)
|
200 |
+
top_intent = self.recognizer.get_top_intent(recognizer_result)
|
201 |
+
if top_intent == "ElementDefense":
|
202 |
+
element_name = recognizer_result.text.strip()
|
203 |
+
element = next(
|
204 |
+
(el for el in self.elements if el.name.lower() in element_name.lower()),
|
205 |
+
None
|
206 |
+
)
|
207 |
+
if element:
|
208 |
+
defense_message = element.execute_defense_function()
|
209 |
+
responses.append(defense_message)
|
210 |
+
else:
|
211 |
+
logging.info(f"No matching element found for '{element_name}'")
|
212 |
+
|
213 |
+
ethical_considerations = self.config.get(
|
214 |
+
'ethical_considerations',
|
215 |
+
"Always act with transparency, fairness, and respect for privacy."
|
216 |
+
)
|
217 |
+
responses.append(f"**Ethical Considerations:**\n{ethical_considerations}")
|
218 |
+
|
219 |
+
formatted_response = "\n\n".join(responses)
|
220 |
+
return formatted_response
|
221 |
+
|
222 |
+
def save_response(self, response):
|
223 |
+
if self.config.get('enable_response_saving', False):
|
224 |
+
save_path = self.config.get('response_save_path', 'responses.txt')
|
225 |
+
try:
|
226 |
+
with open(save_path, 'a', encoding='utf-8') as file:
|
227 |
+
file.write(response + '\n')
|
228 |
+
logging.info(f"Response saved to '{save_path}'.")
|
229 |
+
except Exception as e:
|
230 |
+
logging.error(f"Error saving response to '{save_path}': {e}")
|
231 |
+
|
232 |
+
def backup_response(self, response):
|
233 |
+
if self.config.get('backup_responses', {}).get('enabled', False):
|
234 |
+
backup_path = self.config['backup_responses'].get('backup_path', 'backup_responses.txt')
|
235 |
+
try:
|
236 |
+
with open(backup_path, 'a', encoding='utf-8') as file:
|
237 |
+
file.write(response + '\n')
|
238 |
+
logging.info(f"Response backed up to '{backup_path}'.")
|
239 |
+
except Exception as e:
|
240 |
+
logging.error(f"Error backing up response to '{backup_path}': {e}")
|
241 |
+
|
242 |
+
# Example usage
|
243 |
+
if __name__ == "__main__":
|
244 |
+
config = load_json_config('config.json')
|
245 |
+
# Add Azure OpenAI configurations to the config
|
246 |
+
config['azure_openai_api_key'] = azure_openai_api_key
|
247 |
+
config['azure_openai_endpoint'] = azure_openai_endpoint
|
248 |
+
setup_logging(config)
|
249 |
+
universal_reasoning = UniversalReasoning(config)
|
250 |
+
question = "Tell me about Hydrogen and its defense mechanisms."
|
251 |
+
response = asyncio.run(universal_reasoning.generate_response(question))
|
252 |
+
print(response)
|
253 |
+
if response:
|
254 |
+
universal_reasoning.save_response(response)
|
255 |
+
universal_reasoning.backup_response(response)
|
app.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
-
import gradio as gr
|
2 |
-
|
3 |
-
def greet(name):
|
4 |
-
return "Hello " + name + "!!"
|
5 |
-
|
6 |
-
demo = gr.Interface(fn=greet, inputs="text", outputs="text")
|
7 |
-
demo.launch()
|
|
|
1 |
+
import gradio as gr
|
2 |
+
|
3 |
+
def greet(name):
|
4 |
+
return "Hello " + name + "!!"
|
5 |
+
|
6 |
+
demo = gr.Interface(fn=greet, inputs="text", outputs="text")
|
7 |
+
demo.launch()
|
azure-cli-2.67.0.msi
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:c4cdd13157968052bc2ffeecb4459d466de95d4b9ab8194963ab601d9f613c44
|
3 |
+
size 69042176
|
bot_logic.py
ADDED
@@ -0,0 +1,123 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import logging
|
2 |
+
from botbuilder.core import TurnContext, MessageFactory, ConversationState, UserState
|
3 |
+
from botbuilder.schema import Activity, ActivityTypes, EndOfConversationCodes
|
4 |
+
from UniversalReasoning import UniversalReasoning # Ensure correct import
|
5 |
+
import os
|
6 |
+
from dotenv import load_dotenv
|
7 |
+
from dialog_bot import DialogBot
|
8 |
+
from main_dialog import MainDialog
|
9 |
+
|
10 |
+
# Load environment variables from .env file
|
11 |
+
load_dotenv()
|
12 |
+
|
13 |
+
class MyBot(DialogBot):
|
14 |
+
def __init__(self, conversation_state: ConversationState, user_state: UserState, dialog: MainDialog):
|
15 |
+
super(MyBot, self).__init__(conversation_state, user_state, dialog)
|
16 |
+
self.context = {}
|
17 |
+
self.feedback = []
|
18 |
+
config = load_and_validate_config('config.json', 'config_schema.json')
|
19 |
+
# Add Azure OpenAI and LUIS configurations to the config
|
20 |
+
config['azure_openai_api_key'] = os.getenv('AZURE_OPENAI_API_KEY')
|
21 |
+
config['azure_openai_endpoint'] = os.getenv('AZURE_OPENAI_ENDPOINT')
|
22 |
+
config['luis_endpoint'] = os.getenv('LUIS_ENDPOINT')
|
23 |
+
config['luis_api_version'] = os.getenv('LUIS_API_VERSION')
|
24 |
+
config['luis_api_key'] = os.getenv('LUIS_API_KEY')
|
25 |
+
setup_logging(config)
|
26 |
+
self.universal_reasoning = UniversalReasoning(config)
|
27 |
+
|
28 |
+
async def enhance_context_awareness(self, user_id: str, text: str) -> None:
|
29 |
+
"""Enhance context awareness by analyzing the user's environment, activities, and emotional state."""
|
30 |
+
sentiment = analyze_sentiment_vader(text)
|
31 |
+
self.context[user_id].append({"text": text, "sentiment": sentiment})
|
32 |
+
|
33 |
+
async def proactive_learning(self, user_id: str, feedback: str) -> None:
|
34 |
+
"""Encourage proactive learning by seeking feedback and exploring new topics."""
|
35 |
+
self.context[user_id].append({"feedback": feedback})
|
36 |
+
self.feedback.append({"user_id": user_id, "feedback": feedback})
|
37 |
+
|
38 |
+
async def ethical_decision_making(self, user_id: str, decision: str) -> None:
|
39 |
+
"""Integrate ethical principles into decision-making processes."""
|
40 |
+
ethical_decision = f"Considering ethical principles, the decision is: {decision}"
|
41 |
+
self.context[user_id].append({"ethical_decision": ethical_decision})
|
42 |
+
|
43 |
+
async def emotional_intelligence(self, user_id: str, text: str) -> str:
|
44 |
+
"""Develop emotional intelligence by recognizing and responding to user emotions."""
|
45 |
+
sentiment = analyze_sentiment_vader(text)
|
46 |
+
response = self.generate_emotional_response(sentiment, text)
|
47 |
+
self.context[user_id].append({"emotional_response": response})
|
48 |
+
return response
|
49 |
+
|
50 |
+
def generate_emotional_response(self, sentiment: dict, text: str) -> str:
|
51 |
+
"""Generate an empathetic response based on the sentiment analysis."""
|
52 |
+
if sentiment['compound'] >= 0.05:
|
53 |
+
return "I'm glad to hear that! 😊 How can I assist you further?"
|
54 |
+
elif sentiment['compound'] <= -0.05:
|
55 |
+
return "I'm sorry to hear that. 😢 Is there anything I can do to help?"
|
56 |
+
else:
|
57 |
+
return "I understand. How can I assist you further?"
|
58 |
+
|
59 |
+
async def transparency_and_explainability(self, user_id: str, decision: str) -> str:
|
60 |
+
"""Enable transparency by explaining the reasoning behind decisions."""
|
61 |
+
explanation = f"The decision was made based on the following context: {self.context[user_id]}"
|
62 |
+
self.context[user_id].append({"explanation": explanation})
|
63 |
+
return explanation
|
64 |
+
|
65 |
+
async def on_message_activity(self, turn_context: TurnContext) -> None:
|
66 |
+
"""Handles incoming messages and generates responses."""
|
67 |
+
user_id = turn_context.activity.from_property.id
|
68 |
+
if user_id not in self.context:
|
69 |
+
self.context[user_id] = []
|
70 |
+
try:
|
71 |
+
message_text = turn_context.activity.text.strip().lower()
|
72 |
+
if "end" in message_text or "stop" in message_text:
|
73 |
+
await end_conversation(turn_context)
|
74 |
+
self.context.pop(user_id, None)
|
75 |
+
else:
|
76 |
+
self.context[user_id].append(turn_context.activity.text)
|
77 |
+
response = await self.generate_response(turn_context.activity.text, user_id)
|
78 |
+
await turn_context.send_activity(MessageFactory.text(response))
|
79 |
+
await self.request_feedback(turn_context, user_id)
|
80 |
+
except Exception as e:
|
81 |
+
await handle_error(turn_context, e)
|
82 |
+
|
83 |
+
async def generate_response(self, text: str, user_id: str) -> str:
|
84 |
+
"""Generates a response using UniversalReasoning."""
|
85 |
+
try:
|
86 |
+
logging.info(f"Generating response for user_id: {user_id} with text: {text}")
|
87 |
+
response = self.universal_reasoning.generate_response(text)
|
88 |
+
logging.info(f"Generated response: {response}")
|
89 |
+
return response
|
90 |
+
except Exception as e:
|
91 |
+
logging.error(f"Error generating response: {e}")
|
92 |
+
return "Sorry, I couldn't generate a response at this time."
|
93 |
+
|
94 |
+
async def request_feedback(self, turn_context: TurnContext, user_id: str) -> None:
|
95 |
+
"""Request feedback from the user about the bot's response."""
|
96 |
+
feedback_prompt = "How would you rate my response? (good/neutral/bad)"
|
97 |
+
await turn_context.send_activity(MessageFactory.text(feedback_prompt))
|
98 |
+
|
99 |
+
async def handle_feedback(self, turn_context: TurnContext) -> None:
|
100 |
+
"""Handle user feedback and store it for future analysis."""
|
101 |
+
user_id = turn_context.activity.from_property.id
|
102 |
+
feedback = turn_context.activity.text.lower()
|
103 |
+
if feedback in ["good", "neutral", "bad"]:
|
104 |
+
self.feedback.append({"user_id": user_id, "feedback": feedback})
|
105 |
+
await turn_context.send_activity(MessageFactory.text("Thank you for your feedback!"))
|
106 |
+
else:
|
107 |
+
await turn_context.send_activity(MessageFactory.text("Please provide feedback as 'good', 'neutral', or 'bad'."))
|
108 |
+
|
109 |
+
async def end_conversation(turn_context: TurnContext) -> None:
|
110 |
+
"""Ends the conversation with the user."""
|
111 |
+
await turn_context.send_activity(
|
112 |
+
MessageFactory.text("Ending conversation from the skill...")
|
113 |
+
)
|
114 |
+
end_of_conversation = Activity(type=ActivityTypes.end_of_conversation)
|
115 |
+
end_of_conversation.code = EndOfConversationCodes.completed_successfully
|
116 |
+
await turn_context.send_activity(end_of_conversation)
|
117 |
+
|
118 |
+
async def handle_error(turn_context: TurnContext, error: Exception) -> None:
|
119 |
+
"""Handles errors by logging them and notifying the user."""
|
120 |
+
logging.error(f"An error occurred: {error}")
|
121 |
+
await turn_context.send_activity(
|
122 |
+
MessageFactory.text("An error occurred. Please try again later.")
|
123 |
+
)
|
changelog.md
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Changelog
|
2 |
+
|
3 |
+
All notable changes to this project will be documented in this file.
|
4 |
+
|
5 |
+
## [Unreleased]
|
6 |
+
|
7 |
+
### Added
|
8 |
+
- Initial release of MyBot with multiple perspectives for response generation.
|
9 |
+
- Sentiment analysis using VADER and TextBlob.
|
10 |
+
- Context awareness and ethical decision-making features.
|
11 |
+
- Transparency and explainability in decision-making.
|
12 |
+
- Dialog management using the BotBuilder Dialog framework.
|
13 |
+
|
14 |
+
### Changed
|
15 |
+
- N/A
|
16 |
+
|
17 |
+
### Fixed
|
18 |
+
- N/A
|
19 |
+
|
20 |
+
## [1.0.0] - 2023-10-01
|
21 |
+
|
22 |
+
### Added
|
23 |
+
- Initial release of MyBot with multiple perspectives for response generation.
|
24 |
+
- Sentiment analysis using VADER and TextBlob.
|
25 |
+
- Context awareness and ethical decision-making features.
|
26 |
+
- Transparency and explainability in decision-making.
|
27 |
+
- Dialog management using the BotBuilder Dialog framework.
|
chat.py
ADDED
@@ -0,0 +1,137 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import logging
|
2 |
+
import httpx
|
3 |
+
import os
|
4 |
+
from dotenv import load_dotenv
|
5 |
+
|
6 |
+
# Load environment variables from .env file
|
7 |
+
load_dotenv()
|
8 |
+
|
9 |
+
# Get the API key and endpoint from environment variables
|
10 |
+
api_key = os.getenv('AZURE_OPENAI_API_KEY')
|
11 |
+
endpoint = os.getenv('AZURE_OPENAI_ENDPOINT')
|
12 |
+
|
13 |
+
def list_fine_tuning_jobs() -> dict:
|
14 |
+
"""List fine-tuning jobs.
|
15 |
+
|
16 |
+
Returns:
|
17 |
+
dict: The response from the API containing the list of fine-tuning jobs.
|
18 |
+
"""
|
19 |
+
try:
|
20 |
+
headers = {
|
21 |
+
"Content-Type": "application/json",
|
22 |
+
"Authorization": f"Bearer {api_key}"
|
23 |
+
}
|
24 |
+
response = httpx.get(f"{endpoint}/openai/fine-tunes", headers=headers)
|
25 |
+
response.raise_for_status()
|
26 |
+
return response.json()
|
27 |
+
except httpx.HTTPStatusError as e:
|
28 |
+
logging.error(f"Error listing fine-tuning jobs: {e.response.text}")
|
29 |
+
return None
|
30 |
+
except Exception as e:
|
31 |
+
logging.error(f"Unexpected error: {e}")
|
32 |
+
return None
|
33 |
+
|
34 |
+
def upload_file_for_fine_tuning(file_path: str) -> dict:
|
35 |
+
"""Upload a file for fine-tuning.
|
36 |
+
|
37 |
+
Args:
|
38 |
+
file_path (str): The path to the file to be uploaded.
|
39 |
+
|
40 |
+
Returns:
|
41 |
+
dict: The response from the API after uploading the file.
|
42 |
+
"""
|
43 |
+
try:
|
44 |
+
headers = {
|
45 |
+
"Authorization": f"Bearer {api_key}"
|
46 |
+
}
|
47 |
+
with open(file_path, 'rb') as file:
|
48 |
+
files = {'file': file}
|
49 |
+
response = httpx.post(f"{endpoint}/openai/files", headers=headers, files=files)
|
50 |
+
response.raise_for_status()
|
51 |
+
return response.json()
|
52 |
+
except httpx.HTTPStatusError as e:
|
53 |
+
logging.error(f"Error uploading file for fine-tuning: {e.response.text}")
|
54 |
+
return None
|
55 |
+
except Exception as e:
|
56 |
+
logging.error(f"Unexpected error: {e}")
|
57 |
+
return None
|
58 |
+
|
59 |
+
def create_fine_tuning_job(training_file_id: str, model: str = "davinci") -> dict:
|
60 |
+
"""Create a fine-tuning job.
|
61 |
+
|
62 |
+
Args:
|
63 |
+
training_file_id (str): The ID of the training file.
|
64 |
+
model (str): The model to be fine-tuned. Default is "davinci".
|
65 |
+
|
66 |
+
Returns:
|
67 |
+
dict: The response from the API after creating the fine-tuning job.
|
68 |
+
"""
|
69 |
+
try:
|
70 |
+
headers = {
|
71 |
+
"Content-Type": "application/json",
|
72 |
+
"Authorization": f"Bearer {api_key}"
|
73 |
+
}
|
74 |
+
payload = {
|
75 |
+
"training_file": training_file_id,
|
76 |
+
"model": model
|
77 |
+
}
|
78 |
+
response = httpx.post(f"{endpoint}/openai/fine-tunes", headers=headers, json=payload)
|
79 |
+
response.raise_for_status()
|
80 |
+
return response.json()
|
81 |
+
except httpx.HTTPStatusError as e:
|
82 |
+
logging.error(f"Error creating fine-tuning job: {e.response.text}")
|
83 |
+
return None
|
84 |
+
except Exception as e:
|
85 |
+
logging.error(f"Unexpected error: {e}")
|
86 |
+
return None
|
87 |
+
|
88 |
+
def make_post_request(url: str, data: dict, headers: dict) -> dict:
|
89 |
+
"""Make a POST request.
|
90 |
+
|
91 |
+
Args:
|
92 |
+
url (str): The URL to make the POST request to.
|
93 |
+
data (dict): The data to be sent in the POST request.
|
94 |
+
headers (dict): The headers to be sent in the POST request.
|
95 |
+
|
96 |
+
Returns:
|
97 |
+
dict: The response from the API after making the POST request.
|
98 |
+
"""
|
99 |
+
try:
|
100 |
+
response = httpx.post(url, json=data, headers=headers)
|
101 |
+
response.raise_for_status()
|
102 |
+
return response.json()
|
103 |
+
except httpx.HTTPStatusError as e:
|
104 |
+
logging.error(f"Error making POST request: {e.response.text}")
|
105 |
+
return None
|
106 |
+
except Exception as e:
|
107 |
+
logging.error(f"Unexpected error: {e}")
|
108 |
+
return None
|
109 |
+
|
110 |
+
def azure_chat_completion_request(messages: list, deployment_id: str) -> str:
|
111 |
+
"""Make a chat completion request to Azure OpenAI.
|
112 |
+
|
113 |
+
Args:
|
114 |
+
messages (list): The list of messages to be sent in the chat completion request.
|
115 |
+
deployment_id (str): The deployment ID for the chat completion request.
|
116 |
+
|
117 |
+
Returns:
|
118 |
+
str: The response content from the chat completion request.
|
119 |
+
"""
|
120 |
+
try:
|
121 |
+
headers = {
|
122 |
+
"Content-Type": "application/json",
|
123 |
+
"Authorization": f"Bearer {api_key}"
|
124 |
+
}
|
125 |
+
payload = {
|
126 |
+
"deployment_id": deployment_id,
|
127 |
+
"messages": messages
|
128 |
+
}
|
129 |
+
response = httpx.post(f"{endpoint}/openai/deployments/{deployment_id}/chat/completions", headers=headers, json=payload)
|
130 |
+
response.raise_for_status()
|
131 |
+
return response.json()["choices"][0]["message"]["content"].strip()
|
132 |
+
except httpx.HTTPStatusError as e:
|
133 |
+
logging.error(f"Error making chat completion request: {e.response.text}")
|
134 |
+
return None
|
135 |
+
except Exception as e:
|
136 |
+
logging.error(f"Unexpected error: {e}")
|
137 |
+
return None
|
comprehensive.ipynb
ADDED
The diff for this file is too large to render.
See raw diff
|
|
config.json
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"subscription_id": "5dd32870-bdc6-40cd-981a-f299e93a6439",
|
3 |
+
"resource_group": "Justforpi",
|
4 |
+
"workspace_name": "featurestone"
|
5 |
+
}
|
database.py
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import pyodbc
|
2 |
+
import logging
|
3 |
+
import os
|
4 |
+
from dotenv import load_dotenv
|
5 |
+
|
6 |
+
# Load environment variables from .env file
|
7 |
+
load_dotenv()
|
8 |
+
|
9 |
+
def connect_to_database() -> pyodbc.Connection:
|
10 |
+
"""Connect to the Azure SQL Database."""
|
11 |
+
try:
|
12 |
+
server = os.getenv('AZURE_SQL_SERVER')
|
13 |
+
database = os.getenv('AZURE_SQL_DATABASE')
|
14 |
+
username = os.getenv('AZURE_SQL_USERNAME')
|
15 |
+
password = os.getenv('AZURE_SQL_PASSWORD')
|
16 |
+
driver = '{ODBC Driver 17 for SQL Server}'
|
17 |
+
|
18 |
+
conn_str = f'DRIVER={driver};SERVER={server};DATABASE={database};UID={username};PWD={password}'
|
19 |
+
conn = pyodbc.connect(conn_str)
|
20 |
+
logging.info(f"Connected to the Azure SQL Database at {server}")
|
21 |
+
return conn
|
22 |
+
except pyodbc.Error as e:
|
23 |
+
logging.error(f"Error connecting to the Azure SQL Database: {e}")
|
24 |
+
return None
|
25 |
+
|
26 |
+
def close_database_connection(conn: pyodbc.Connection) -> None:
|
27 |
+
"""Close the database connection."""
|
28 |
+
try:
|
29 |
+
if conn:
|
30 |
+
conn.close()
|
31 |
+
logging.info("Database connection closed.")
|
32 |
+
except pyodbc.Error as e:
|
33 |
+
logging.error(f"Error closing the database connection: {e}")
|
34 |
+
|
35 |
+
# Example usage with context management
|
36 |
+
class DatabaseConnection:
|
37 |
+
def __enter__(self) -> pyodbc.Connection:
|
38 |
+
self.conn = connect_to_database()
|
39 |
+
return self.conn
|
40 |
+
|
41 |
+
def __exit__(self, exc_type, exc_value, traceback) -> None:
|
42 |
+
close_database_connection(self.conn)
|
43 |
+
|
44 |
+
# Example usage
|
45 |
+
if __name__ == "__main__":
|
46 |
+
with DatabaseConnection() as conn:
|
47 |
+
if conn:
|
48 |
+
# Perform database operations
|
49 |
+
pass
|
dialog_bot.py
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from botbuilder.core import ActivityHandler, ConversationState, TurnContext, UserState
|
2 |
+
from botbuilder.dialogs import Dialog
|
3 |
+
from helpers.dialog_helper import DialogHelper
|
4 |
+
|
5 |
+
|
6 |
+
class DialogBot(ActivityHandler):
|
7 |
+
def __init__(
|
8 |
+
self,
|
9 |
+
conversation_state: ConversationState,
|
10 |
+
user_state: UserState,
|
11 |
+
dialog: Dialog,
|
12 |
+
):
|
13 |
+
super(DialogBot, self).__init__()
|
14 |
+
self.conversation_state = conversation_state
|
15 |
+
self.user_state = user_state
|
16 |
+
self.dialog = dialog
|
17 |
+
|
18 |
+
async def on_turn(self, turn_context: TurnContext) -> None:
|
19 |
+
await super().on_turn(turn_context)
|
20 |
+
|
21 |
+
# Save any state changes that might have occurred during the turn.
|
22 |
+
await self.conversation_state.save_changes(turn_context)
|
23 |
+
await self.user_state.save_changes(turn_context)
|
24 |
+
|
25 |
+
async def on_message_activity(self, turn_context: TurnContext) -> None:
|
26 |
+
# Run the Dialog with the new message Activity.
|
27 |
+
await DialogHelper.run_dialog(
|
28 |
+
self.dialog,
|
29 |
+
turn_context,
|
30 |
+
self.conversation_state.create_property("DialogState"),
|
31 |
+
)
|
download (1).htm
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html><html><head><meta charset='utf-8'/><title>Microsoft Azure</title></head><body><script>"use strict";var FxImpl,__extends,__assign,__rest,__decorate,__param,__esDecorate,__runInitializers,__propKey,__setFunctionName,__metadata,__awaiter,__generator,__exportStar,__values,__read,__spread,__spreadArrays,__spreadArray,__await,__asyncGenerator,__asyncDelegator,__asyncValues,__makeTemplateObject,__importStar,__importDefault,__classPrivateFieldGet,__classPrivateFieldSet,__classPrivateFieldIn,__createBinding,__addDisposableResource,__disposeResources,MsPortalImpl;!function(e){let t,r;try{t=window.localStorage,r=window.sessionStorage}catch(e){}e.localStorage=t,e.sessionStorage=r}(MsPortalImpl||(MsPortalImpl={})),function(e){e.getOrSetBootParameters=function(e,t){if(1===arguments.length)return e.sessionStorage.getItem("Redirect_BootParameters")||e.localStorage.getItem("Redirect_BootParameters");e.sessionStorage.setItem("Redirect_BootParameters",t),e.localStorage.setItem("Redirect_BootParameters",t)}}(MsPortalImpl||(MsPortalImpl={})),function(e){e.getTenantFromPath=function(e,t){const r=e.split("/").filter((e=>e));let n="";if(1===r.length?n=r[0]:e.startsWith("/auth/login")&&3===r.length&&(n=r[2]),n){const e=n.replace(/^@*/,""),r=/^[a-f0-9]{8}-(?:[a-f0-9]{4}-){3}[a-f0-9]{12}$/i;if(/^@?(?:(?:[a-z0-9]|[a-z0-9][a-z0-9-]{0,61}[a-z0-9])\.)+[a-z0-9]+|common$/i.test(e)||r.test(e))return t?"@"+e:e}return""}}(MsPortalImpl||(MsPortalImpl={})),function(e){var t=new Uint8Array(20),r=new Array(20);function n(e,r,n){var o=t[e]&r;t[e]=o|n}var o=window.crypto||window.msCrypto,a="0123456789abcdef".split(""),s=new Array(256),i=0;function c(){var e=function(e){for(var t,r=new Array(e);e;){t=4294967296*Math.random()|0;for(var n=8;n--;){if(r[--e]=a[15&t],e<0)return r;t>>>=4}}}(36);return e[8]=e[13]=e[18]=e[23]="-",e[14]="4",e[19]=a[8+(3&a.indexOf(e[19]))],e.join("")}a.forEach((function(e){a.forEach((function(t){s[i++]=e+t}))})),e.createGuid=function(e,a){void 0===a&&(a=!1);var i=o?function(){o.getRandomValues(t),n(8,15,64),n(11,63,128);for(var e=0;e<20;e++)r[e]=s[t[e]];return r[4]=r[7]=r[10]=r[13]="-",r.join("")}():c();return i=a?i.split("-").join("").substring(0,32):i.substring(0,36),(e?"".concat(e,"_"):"")+i}}(FxImpl||(FxImpl={})),function(e){e.supportedLanguagesNeutralLocales={de:"de-de",en:"en-us",es:"es-es",fr:"fr-fr",it:"it-it",id:"id-id",hu:"hu-hu",nl:"nl-nl",pl:"pl-pl","pt-br":"pt-br","pt-pt":"pt-pt",sv:"sv-se",tr:"tr-tr",cs:"cs-cz",ru:"ru-ru","zh-hans":"zh-cn","zh-hant":"zh-hk",ja:"ja-jp",ko:"ko-kr"};const t={"zh-hk":"zh-hant","zh-tw":"zh-hant","zh-cht":"zh-hant","zh-mo":"zh-hant",zh:"zh-hans",pt:"pt-br"};function r(e){const t=[];for(let r=(e=e||"").length;r>0;r=e.lastIndexOf("-",r-1))t.push(e.substring(0,r));return t}e.sanitizeLanguage=function(t,r){const n=(t||"").toLowerCase().split(".");if(r.includes(n[0])||(n[0]=r[0]),n.length<2){const t=e.supportedLanguagesNeutralLocales[n[0]];t&&(n[1]=t)}return n.join(".")},e.getBrowserLanguage=function(n){const o=(n||navigator.languages||[]).map((e=>e?.toLowerCase?.()));for(const n of o){const o=r(n);for(const r of o){const o=t[r]||r;if(o in e.supportedLanguagesNeutralLocales){const t=o;return`${t}.${n.split("-").length>1?n:e.supportedLanguagesNeutralLocales[t]}`}}}}}(MsPortalImpl||(MsPortalImpl={})),function(e){let t=window;function r(e){return e&&e.replace(/^\?/,"")}function n(e){return e&&r(e).split("&").map((e=>e.split("=")))||[]}function o(e,t){const r=e.map((e=>e[0]&&e.join("=")));return t&&r.sort(),r.join("&")}function a(e,t,r){if(t=t.toUpperCase(),e)for(let n=0;n<e.length;n++)if(e[n][0].toUpperCase()===t)return r?e.splice(n,1)[0][1]:e[n][1]}function s(){return JSON.parse(e.getOrSetBootParameters(e)||"{}")}function i(e){return a(n(s().userQuery),e)}function c(e){if(!e||e.startsWith("/"))return c(`${t.location.protocol}//${t.location.host}`);const r=/^(\w+:\/\/)([^:/?]+)([^/?]+)?/.exec(e),n=r[3]||("https://"===r[1]?":443":":80");return r[2]+n}function l(t,s,l,u){l=l||"",u=u||{};let f="";if(t&&c()===c(t))f=function(t,r,s){const c=n(t),l=e=>{Object.keys(e).forEach((t=>{t&&e[t]&&"string"!=typeof a(c,t)&&c.push([t,e[t]])}))};if(l(JSON.parse(e.localStorage.getItem("Redirect_LocaleQuery")||"{}")),l({l:e.localStorage.getItem("Redirect_LastUsedLocale")}),r.env){const t={},n=(n,o,a)=>{o=o||["true","false"];const s=n+(a||"");let c=i(n)||r[n];c||(c=e.localStorage.getItem(s)+"",o.includes(c)||(c=o[Math.floor(Math.random()*o.length)],e.localStorage.setItem(s,c))),t[n]=c},o=new Array(100);o.fill("DefaultPartitioner",0,100),n("bundlingKind",o,"12"),l(t)}l(r),["signIn","clearedStorage"].forEach((e=>{a(c,e,!0)}));const u=a(c,"l",!0)||e.getBrowserLanguage();return l({l:e.sanitizeLanguage(u,s)}),o(c,!0)}(l,u,s);else{const e=u.loginHint;e&&(l+=l?"&":"",l+=`loginHint=${e}`),f=r(l)}return f&&(t+=t.includes("?")?"&":"?",t+=f),t}e.parseQuery=n,e.extractValueFromQueryString=function(e,t){return a(e,t,!1)},e.getFirstQueryValue=a,e.getBootParameters=s,e.trySaveAllowedState=function(r,n,i,c){if(!e.getOrSetBootParameters(e)||i){["selectAccount","loginHint","signInParameters","forcesignin","nonceErrorSeen","signIn","slice","mfalogin"].forEach((e=>{a(n,e,!0)}));const i=/#.*|$/.exec(t.location.href)[0];let l;i.startsWith("#code=")?(l=s(),l.msalHash=i):l={environment:r,userQuery:o(n),portalQuery:c,hash:i,msalHash:void 0},e.getOrSetBootParameters(e,JSON.stringify(l))}},e.savePageTelemetry=function(r){const n=t.performance&&t.performance.timing;if(n){const t={id:r,fetchStart:n.fetchStart,requestStart:n.requestStart,responseStart:n.responseStart,responseEnd:n.responseEnd,domComplete:n.domComplete};e.sessionStorage.setItem(`PageTelemetry_${r}`,JSON.stringify(t))}},e.getUserQueryValue=i,e.getPortalUri=function(e,t,r){r=r||{};const n=s(),o=n.hash||"";return l(e,t,r.userQuery||n.userQuery,r.portalQuery||n.portalQuery)+o},e.getPortalEnv=function(){return location.hostname.split(".")[0].toLowerCase()}}(MsPortalImpl||(MsPortalImpl={})),function(e){var t="object"==typeof global?global:"object"==typeof self?self:"object"==typeof this?this:{};function r(e,r){return e!==t&&("function"==typeof Object.create?Object.defineProperty(e,"__esModule",{value:!0}):e.__esModule=!0),function(t,n){return e[t]=r?r(t,n):n}}"function"==typeof define&&define.amd?(
|
2 |
+
define("tslib",["exports"],(function(n){e(r(t,r(n)))})),require(["tslib"])):"object"==typeof module&&"object"==typeof module.exports?e(r(t,r(module.exports))):e(r(t))}((function(e){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};__extends=function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){Object.defineProperty(this,"constructor",{configurable:!0,value:e,writable:!0})}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)},__assign=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},__rest=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)t.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]])}return r},__decorate=function(e,t,r,n){var o,a=arguments.length,s=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var i=e.length-1;i>=0;i--)(o=e[i])&&(s=(a<3?o(s):a>3?o(t,r,s):o(t,r))||s);return a>3&&s&&Object.defineProperty(t,r,s),s},__param=function(e,t){return function(r,n){t(r,n,e)}},__esDecorate=function(e,t,r,n,o,a){function s(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var i,c=n.kind,l="getter"===c?"get":"setter"===c?"set":"value",u=!t&&e?n.static?e:e.prototype:null,f=t||(u?Object.getOwnPropertyDescriptor(u,n.name):{}),p=!1,_=r.length-1;_>=0;_--){var d={};for(var y in n)d[y]="access"===y?{}:n[y];for(var y in n.access)d.access[y]=n.access[y];d.addInitializer=function(e){if(p)throw new TypeError("Cannot add initializers after decoration has completed");a.push(s(e||null))};var m=(0,r[_])("accessor"===c?{get:f.get,set:f.set}:f[l],d);if("accessor"===c){if(void 0===m)continue;if(null===m||"object"!=typeof m)throw new TypeError("Object expected");(i=s(m.get))&&(f.get=i),(i=s(m.set))&&(f.set=i),(i=s(m.init))&&o.unshift(i)}else(i=s(m))&&("field"===c?o.unshift(i):f[l]=i)}u&&Object.defineProperty(u,n.name,f),p=!0},__runInitializers=function(e,t,r){for(var n=arguments.length>2,o=0;o<t.length;o++)r=n?t[o].call(e,r):t[o].call(e);return n?r:void 0},__propKey=function(e){return"symbol"==typeof e?e:"".concat(e)},__setFunctionName=function(e,t,r){return"symbol"==typeof t&&(t=t.description?"[".concat(t.description,"]"):""),Object.defineProperty(e,"name",{configurable:!0,value:r?"".concat(r," ",t):t})},__metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},__awaiter=function(e,t,r,n){return new(r||(r=Promise))((function(o,a){function s(e){try{c(n.next(e))}catch(e){a(e)}}function i(e){try{c(n.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,i)}c((n=n.apply(e,t||[])).next())}))},__generator=function(e,t){var r,n,o,a,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function i(i){return function(c){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a&&(a=0,i[0]&&(s=0)),s;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,n=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!(o=s.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){s.label=i[1];break}if(6===i[0]&&s.label<o[1]){s.label=o[1],o=i;break}if(o&&s.label<o[2]){s.label=o[2],s.ops.push(i);break}o[2]&&s.ops.pop(),s.trys.pop();continue}i=t.call(e,s)}catch(e){i=[6,e],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,c])}}},__exportStar=function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||__createBinding(t,e,r)},__createBinding=Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]},__values=function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},__read=function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,a=r.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(n=a.next()).done;)s.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(o)throw o.error}}return s},__spread=function(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(__read(arguments[t]));return e},__spreadArrays=function(){for(var e=0,t=0,r=arguments.length;t<r;t++)e+=arguments[t].length;var n=Array(e),o=0;for(t=0;t<r;t++)for(var a=arguments[t],s=0,i=a.length;s<i;s++,o++)n[o]=a[s];return n},__spreadArray=function(e,t,r){if(r||2===arguments.length)for(var n,o=0,a=t.length;o<a;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))},__await=function(e){return this instanceof __await?(this.v=e,this):new __await(e)},__asyncGenerator=function(e,t,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n,o=r.apply(e,t||[]),a=[];return n={},s("next"),s("throw"),s("return",(function(e){return function(t){return Promise.resolve(t).then(e,l)}})),n[Symbol.asyncIterator]=function(){return this},n;function s(e,t){o[e]&&(n[e]=function(t){return new Promise((function(r,n){a.push([e,t,r,n])>1||i(e,t)}))},t&&(n[e]=t(n[e])))}function i(e,t){try{(r=o[e](t)).value instanceof __await?Promise.resolve(r.value.v).then(c,l):u(a[0][2],r)}catch(e){u(a[0][3],e)}var r}function c(e){i("next",e)}function l(e){i("throw",e)}function u(e,t){e(t),a.shift(),a.length&&i(a[0][0],a[0][1])}},__asyncDelegator=function(e){var t,r;return t={},n("next"),n("throw",(function(e){throw e})),n("return"),t[Symbol.iterator]=function(){return this},t;function n(n,o){t[n]=e[n]?function(t){return(r=!r)?{value:__await(e[n](t)),done:!1}:o?o(t):t}:o}},__asyncValues=function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e="function"==typeof __values?__values(e):e[Symbol.iterator](),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(r){t[r]=e[r]&&function(t){return new Promise((function(n,o){(function(e,t,r,n){Promise.resolve(n).then((function(t){e({value:t,done:r})}),t)})(n,o,(t=e[r](t)).done,t.value)}))}}},__makeTemplateObject=function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e};var r=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t};__importStar=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return r(t,e),t},__importDefault=function(e){return e&&e.__esModule?e:{default:e}},__classPrivateFieldGet=function(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)},__classPrivateFieldSet=function(e,t,r,n,o){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!o)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!o:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?o.call(e,r):o?o.value=r:t.set(e,r),r},__classPrivateFieldIn=function(e,t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?t===e:e.has(t)},__addDisposableResource=function(e,t,r){if(null!=t){if("object"!=typeof t&&"function"!=typeof t)throw new TypeError("Object expected.");var n;if(r){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");n=t[Symbol.asyncDispose]}if(void 0===n){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");n=t[Symbol.dispose]}if("function"!=typeof n)throw new TypeError("Object not disposable.");e.stack.push({value:t,dispose:n,async:r})}else r&&e.stack.push({async:!0});return t};var n="function"==typeof SuppressedError?SuppressedError:function(e,t,r){var n=new Error(r);return n.name="SuppressedError",n.error=e,n.suppressed=t,n};__disposeResources=function(e){function t(t){e.error=e.hasError?new n(t,e.error,"An error was suppressed during disposal."):t,e.hasError=!0}return function r(){for(;e.stack.length;){var n=e.stack.pop();try{var o=n.dispose&&n.dispose.call(n.value);if(n.async)return Promise.resolve(o).then(r,(function(e){return t(e),r()}))}catch(e){t(e)}}if(e.hasError)throw e.error}()},e("__extends",__extends),e("__assign",__assign),e("__rest",__rest),e("__decorate",__decorate),e("__param",__param),e("__esDecorate",__esDecorate),e("__runInitializers",__runInitializers),e("__propKey",__propKey),e("__setFunctionName",__setFunctionName),e("__metadata",__metadata),e("__awaiter",__awaiter),e("__generator",__generator),e("__exportStar",__exportStar),e("__createBinding",__createBinding),e("__values",__values),e("__read",__read),e("__spread",__spread),e("__spreadArrays",__spreadArrays),e("__spreadArray",__spreadArray),e("__await",__await),e("__asyncGenerator",__asyncGenerator),e("__asyncDelegator",__asyncDelegator),e("__asyncValues",__asyncValues),e("__makeTemplateObject",__makeTemplateObject),e("__importStar",__importStar),e("__importDefault",__importDefault),e("__classPrivateFieldGet",__classPrivateFieldGet),e("__classPrivateFieldSet",__classPrivateFieldSet),e("__classPrivateFieldIn",__classPrivateFieldIn),e("__addDisposableResource",__addDisposableResource),e("__disposeResources",__disposeResources)})),function(e){let t=window,r=t.document,n=t.location,o=r.body;function a(e){return(e||"")+""}e.stringify=a;let s=a(navigator&&navigator.userAgent);function i(e,t){return e.includes(t)}const c=JSON.stringify,l=encodeURIComponent;e.cobrand=function(){};const u="Redirect_SomeRandomKey";function f(e){const t=i(s,"Windows");if((i(s,"Macintosh; Intel")||t)&&i(s,"Safari")&&!i(s,"Chrome")&&function(e){if(i(s,e)){const t=new RegExp(`\\s${e}/(\\d+)[\\.\\s$]`).exec(s),r=a(t&&t[1]);return parseInt(r,10)}}("Version")<=11)return e+"?reason=isSafari";const n=!!r.documentMode,o=/Trident\//i.test(s),c=i(s,"MSIE"),l=!Array.prototype.find;return n||o||c||l?e+"?reason=isIE":Promise&&Promise.prototype.finally&&Promise.allSettled&&Promise.any?"":e+"?reason=promise"}function p(e){return _("clearedStorage=true",`${e}/Html5StorageExceeded`,!0)}function _(t,r,o){return n.search.includes(t)?r:(o&&(e.localStorage.clear(),e.sessionStorage.clear()),(n.search&&n.search+"&"||"?")+t+n.hash)}function d(e,t){if(void 0!==e)return e;if(t&&t.startsWith("flight:")){const e=parseFloat(t.split(":")[1]);return Math.random()<e?"true":"false"}return t}e.redirect=async function(s){const i=s.portalServerConfig,y=s.portalServerFeatures,m=i.errorUri;if("true"===e.localStorage.getItem("MsalJsV3")?e.sessionStorage.setItem("MsalJsV3","true"):e.sessionStorage.removeItem("MsalJsV3"),"aad.portal.azure.com"===n.hostname.toLowerCase()&&["","#","#home"].includes(n.hash.toLowerCase()))return void(n.href=`https://entra.microsoft.com${n.pathname||""}${n.search||""}#view/Microsoft_AAD_IAM/TenantOverview.ReactView`);let h;try{const l=function(t){let r;try{[e.localStorage,e.sessionStorage].forEach((e=>{if(r=e.length,e.setItem(u,u),u!==e.getItem(u))throw u;e.removeItem(u)}))}catch(e){return 22===e.code&&r?p(t):_("storagepolyfill=true",`${t}/UE_NoHtml5Storage`)}}(m),g=i.portalQuery,v=i.applicationPath,w=i.supportedLanguages,b=e.parseQuery(t.location.search),S=[...b],I=i.unsupportedUri,P=(t,r)=>d(e.extractValueFromQueryString(S,"feature."+t),r),O=t=>e.getFirstQueryValue(S,t,!0);if(h=f(I)||function(e){return t.Intl?"":e+"?reason=intl"}(I)||l,!h){const l=e.sessionStorage,u=e.localStorage;u.removeItem("signOutAll");const f=O("Referrer");g.env=e.getPortalEnv(),"true"===O("feature.armbreakglass")&&l.setItem("Redirect_ArmBreakGlass","true");const p=O("sessionId"),_=FxImpl.createGuid(p,!0);l.setItem("Redirect_SessionId",_),e.trySaveAllowedState(i.environment,S,!0,g),e.savePageTelemetry("EntryPoint"),l.setItem("Redirect_Referrers",c([a(r.referrer),a(f)]));const I=`${n.protocol}//${n.host}${v}`,j=function(t,r){const n=[];return Object.keys(r).forEach((o=>{const a="feature."+o,s=d(e.extractValueFromQueryString(t,a),r[o]);s&&n.push(`${a}=${s}`)})),n.join("&")}(S,{settingsportalinstance:y.settingsPortalInstanceValue,inmemorysettings:y.inMemorySettingsValue,argsubscriptions:y.argSubscriptionsValue,showservicehealthalerts:y.showServiceHealthAlertsValue,prefetchtokens:y.prefetchTokensValue,internalgraphapiversion:y.internalGraphApiVersionValue,cae:y.caeValue,selftoken:y.selfTokenValue,globalresourcefilter:y.globalResourceFilterValue,msaljs:y.msalJsValue,fetchpolicyforrestypes:y.fetchPolicyForResTypesValue,testcrosscloudpuid:y.testCrossCloudPuidValue,useredirecthint:y.useRedirectHintValue,usetenanthint:y.useTenantHintValue,nativebroker:y.nativeBrokerValue,msaljswithfallback:y.msalJsWithFallbackValue});let E=e.getTenantFromPath(n.pathname,!0);const x=u.getItem("preferredPortalUri"),R=parseInt(function(e,t){const r=e.getItem(t);return e.removeItem(t),r}(l,"Redirect_PreferredPortalRedirectCount"))||0,T=P("useredirecthint",y.useRedirectHintValue),V=P("msaljs",y.msalJsValue);if(!E&&function(t){const r=e.sessionStorage.getItem("authState");if(r){try{const n=JSON.parse(r),o=n?.oAuthToken;let a=0;o?.authHeader&&(a=o.expiresAt);let s=o&&a>=Date.now();const i=n?.selfOAuthToken;if(i?.authHeader&&(s=s&&(i.expiresAt||0)>=Date.now()),s=t?s&&!!n.isInitializedUsingSpaAuthCode:s&&!!n.refreshToken,s)return e.localStorage.removeItem("authState"),!0}catch(e){}e.sessionStorage.removeItem("authState")}return!1}("true"===V))h=e.getPortalUri(I,w);else if("true"===T&&x&&x!==n.hostname&&!(S||[]).length&&!E&&R<3)l.setItem("Redirect_PreferredPortalRedirectCount",R+1+""),h=e.getPortalUri(x,w,{portalQuery:i.portalQuery});else{let r=parseInt(l.getItem("Redirect_IdpRedirectCount"))||0;E=/^#@([^/]*)|$/.exec(/#.*|$/.exec(t.location.href)[0])[1]||E;const c=P("usetenanthint",y.useTenantHintValue);let f="";const p=u.getItem("tenantHint");if("true"===c&&p&&(f=`&tenantHint=${p}`,u.removeItem("tenantHint"),l.setItem("usedTenantHint",p)),"true"===e.localStorage.getItem("MsalJsLoginEnabled"))try{let t=E.startsWith("@")?E.substring(1):E;t=t||"organizations";const r={armAadResource:i.armAadResource,authority:i.authority,forceSignInQueryStringValue:e.extractValueFromQueryString(b,"forcesignin")||"",portalClientId:i.portalClientId,portalRequestedTenantInfo:{id:t,domainName:"",displayName:""}};await e.loginUsingMsalJs({isNativeBrokerEnabled:e.useMsalJsV3InCurrentSession()&&"true"===P("nativebroker",y.nativeBrokerValue),portalOptions:r,portalServerMsalJsConfig:s.portalServerMsalJsConfig,source:"Startup",userQueryStringInUrl:b,loginStage:{type:"Startup"}})}catch(t){e.saveLog({source:"Startup",action:"FallbackToLegacySignIn",data:{errorMessage:t.message+(t.stack||"")||t.toString()}}),e.sessionStorage.removeItem("PortalRequestedTenant")}const d=t.document.createElement("script"),h=e.localStorage.getItem("SavedDefaultDirectory"),g=h?`&savedDefaultDirectory=${h}`:"",v=["signInParameters","loginHint","selectAccount","forcesignin","whr","slice","mfalogin"].reduce(((t,r)=>{const n=e.extractValueFromQueryString(b,r);return n&&(t+=`&${r}=${n}`),t}),"");d.src=`${i.signinUri}${E}?sessionId=${_}&${j}&idpc=${r}${f}${g}${v}`,o.appendChild(d),setTimeout((()=>{l.setItem("Redirect_IdpRedirectCount",a(++r)),r%3?n.reload():n.href=m+"/UE_IDP"}),6e4);const S=e.getPortalUri(I,w),O=new XMLHttpRequest;O.open("GET",S),O.send(null)}}}catch(e){if(22===(e=e||{}).code)h=p(m);else{let t=l(a(e));const r=e.message;r&&(t=l(r)+"&stack="+l(e.stack)),h=m+"/Unhandled?err="+t}}h&&(n.href=h)}}(MsPortalImpl||(MsPortalImpl={}));
|
3 |
+
MsPortalImpl.redirect({"portalServerFeatures":{"settingsPortalInstanceValue":"","argSubscriptionsValue":"true","showServiceHealthAlertsValue":"true","inMemorySettingsValue":"","prefetchTokensValue":"","internalGraphApiVersionValue":"true","caeValue":"","selfTokenValue":"true","globalResourceFilterValue":"true","msalJsValue":"true","fetchPolicyForResTypesValue":"true","testCrossCloudPuidValue":"true","useRedirectHintValue":"true","useTenantHintValue":"true","nativeBrokerValue":"","msalJsWithFallbackValue":""},"portalServerConfig":{"portalQuery":{"configHash":"PkNJfkTTGDC1","pageVersion":"14.232.2.114.232.0.192030.241204-1800"},"environment":{"extensionsManifestHash":{"assetTypes":[["fzk-_69RhleV","7qKquWseJrkc"],["S9Wpr66CYe3e","qm2J0tGhtDkL"],["63VZs6bRmsRs","D9LjZFkHZr11"],["uO9aEWpC1fdv","lgMhtx-9cI-2"],["f8L4mqUdJz1L","m11RsozBSzDH"],["hsFXU-hOeL82","ej-vAIYmGCQq"],["nlEwPPz58LyX","AfNNA5UCTEL2"],["lfo0gzQzJz9-","-7LFSki2_sMF"],["5kYOqbRPWmEK","ORuUD_P3endQ"],["Y2vvbX_Rvumq","01piWrI6Au-y"],["gjtZ8sGyp4OO","8rNMaUIsWfLi"],["itGrl7kOnTAL","kQ5_wfwI6ke-"],["OX-PxLWSUAyu","29-UaJ153mcJ"],["e75KiN-kcag5","hfjHt4rpuDws"],["qKl_YGNNLpgm","i4ilPWfgF9L1"],["NNWIfGIdGBOz","Mqu9QNBfxi9d"],["Um_Q7Xxn4LoL","TfhWontS-zfY"],["FunRw0SBrz-y","TKBDdc8DYfTV"],["uPIdchkR9NCf","gwjpVZk-R3EF"],["YWyscj-Bbc8A","Pv9IonpkkVjz"]],"assetTypesBrowse":[["qvrLhGn7e2R4","k0ugWJ0ShOZp"],["j0g2-Hacu8Mz","MJaTq082kcbi"],["FO9H3As-NK_Z","2a5Ov5UJCbRE"],["ox80INLlPEV9","9aW6em_jJQC3"],["Z-4kkvFTLL9o","33Kt3-bBuD1P"],["PC9QtBTRmw0J","Hy7eV-yQID_S"],["Bo0uZf70dO8q","uCR_2kPMA6J2"],["OczBJeE44L_R","ODQRV4S11fDB"],["YOIMeIY_3b5i","DSki_KGZl8d7"],["HU5-BZJZdnuP","lYIrURBG4Lqy"],["ZMUm0ooJQ6NF","gm0XkejG_8xT"],["rG2tvJMMDdlb","x_GW82WkeEg4"],["LB5F9b6T08eL","2KI6RKed0JGj"],["Ojt-hlOttygN","cR5nGwbv6a2m"],["bQoiNaki2TJb","T19sHqQ3SwGA"],["WR0mWyAxlg7T","4a7Vp_bkZpdR"],["H4Tu3lmgvTHO","lqErdT5QACv0"],["qT8myUb9HMFR","p-5MSr6xJmus"],["Ri1cSHbeTuAu","ZkJWwMzomniS"],["i1I2_A9v44uu","nke5AHnj8ZSu"]],"assetTypesMenu":[["CWtcNNXk2KL1","uFKWwT7YvAkv"],["e7KXHJk-avNU","iU2aG3LGKPDV"],["t0qwGn3Sh5Jq","OrjT0fAMr23X"],["WAHUieSFstvP","1IOdW_QxhRSB"],["vxz-XIQvV9GM","rXnurc9n0VMf"],["PQoWYolC8peP","D_ExihZtW3Sx"],["1rFkcfM6KHPc","0-FGkZ7b5dcT"],["H8VkacN6M97m","G9mAdiYLEziy"],["ti8zS-UYlEqf","rrOIsVgP6js9"],["Qnl6ft6xN1VF","cFsqD6AFJzsf"],["XKpS9RXObIV_","SZSGpOpzcYOQ"],["1yQR7DArf2v5","6R8aUhfjAYXv"],["Gtn9DnrZPZWd","v1Ipp-i6Wu7f"],["8q6jH6B7XHr-","l3lgjBhPVk8Z"],["Yz2yEmoWSbJ6","M5GV16zUGPDx"],["ZmAWjZ7WM0IJ","WEKIhRAeYJA-"],["XAKw_v9-VxCS","bzIjcnJbz0Yq"],["Yk6a0FeJxIwR","KO8BOW3uk4bq"],["TDjWvC3HDh-V","7imnhVpSQgMU"],["nO5C_dvOviFr","h3dhZ9Ns_Gcg"]],"copilot":[["ouDuYMslcsxa","7SQeikVg_3hD"],["MXD8yELY-yHZ","z3OaWXP9098p"],["kc6Utns353tU","buswQ98vC4_T"],["5zrpupczXHyD","UhlebxtBtW3q"],["_GLNtXOEwRvM","iyE71UkBh07E"],["GWPtYjaB8SDQ","QL_UqEKa-yCU"],["rcnc3X_EIXxM","VjjPP0d59fow"],["5I_PqbCj6-Ii","rRe9XZYyRj4E"],["StZJDNvZWXPP","1JTBG__YtPPN"],["8Q4CmN6uCCNV","Dhiry0gCqz5i"],["FpsdPCUzdtZW","MGup3TJpskAh"],["R_tSUh_XRDkd","3P89f0O1ZXip"],["cjtUdZD8I_5B","GVWlIwMJhb4j"],["DVfQrjDrb7TP","QivCmgrzoSrS"],["WMbY14iQAr0k","E-aphlQTskeT"],["NsKdCJI93FMC","zDn05N4rB4tH"],["6QfwwbgJzBSD","gX4njVT_3KJ7"],["CWgoWYtGDDlz","5iHzHXhAZYvS"],["_BwfFzFCEDNV","Bus5RHfbmTvM"],["ouDuYMslcsxa","7SQeikVg_3hD"]],"extensionConfiguration":[["cnr4lI4ldr5Q","lQ8OpLVfTNJY"],["Kp62fcUM8DI3","CKVXKnkKG407"],["gIAGw_-LpU5B","2b_xV57k3YJ_"],["tMa_FyZOpN5m","T0PzmIpvzKYj"],["w9DveOaTHwH6","59cdcEU4f6DO"],["24srI6dhJoX2","cF-W7NoE72Pt"],["8VtWR5DMNM3C","gG1ThAqzqZmN"],["gkWpy3AXtSKV","YbAZjRcMbbdK"],["fAWj2q_FPxff","CXaK7Jha5JAq"],["UDODSIVHxNli","A2YkVzeZcg8S"],["WfBdDij2h6zR","oDuqmQ_q3Y4A"],["aEtFTZXWV8u-","RdcrT5VaD_xh"],["8XeWOKheoIFe","QYHNtCvQEYiO"],["6nrmyo4wU6oh","RUfXxU4KxT-i"],["VxAaqQKI2oU0","u5mjgeema9yn"],["cGXh86NHmtMa","Wpp0eMDjBoZ5"],["UqaZ8-BycncW","W4dIVKsUe0iI"],["79203hFrDTtd","LonWBUJp0do3"],["cev2eIJQfXX7","pxY-6deZDsUY"],["cnr4lI4ldr5Q","lQ8OpLVfTNJY"]],"featureCards":[["I1hn0UAALVce","YuOmwVntpQ-g"],["pxnsxruXwd0c","NxsMn96zL-BN"],["G0Iyhvc2wqJx","EpZcQuk5oNvl"],["iXEZQ87gF2_Q","fUIidLiWUICi"],["_7h5vlNnHTLc","77o1fQKTVo9s"],["sw2f5Xtu9701","RK9TlQE3Y-4E"],["AReK7hVk4d07","OJIW3uT1v1T_"],["flWb8MWO9C6n","LnvE9P7NW9HY"],["7OierOMRZ4Jt","yrTAxAQ31lAB"],["tdkOzom5NCon","CSQ-a7AFrmAs"],["6Sh5mXBwo07O","OIxiu7uqEJZp"],["bRAxCirrxaAD","LCqBejFcNjxj"],["tMAjZfOAYJey","Vi9i88PdJwzh"],["X_Tyk1CfHZb_","7AEv-KOwVfPs"],["i9RyD3jANwyi","VUd-wR6weM2i"],["C_a5lL75JIj7","EmK5uW2Xdv09"],["QdK3BoF609ph","lMhO64cbUgjc"],["LW3tOEfly-ba","s4abFqoYGXA_"],["DXgk_WmPgr-v","J1JB92WmrLiH"],["UYS0IppCfI4o","KvIuHXUyUcW-"]],"galleryParts":[["QjhJ-2h6a97W","4JzwEgxQA6Cr"],["S2FifjTFJUOM","QB03wZjs_oM_"],["tpnPbYYHZXU-","xv_t88PJ4TLu"],["UHw1MvPVlm6m","1zQ_cS7omLr8"],["qfUj1eSCrVZB","AOGOEt_PPLM0"],["nNNfTWoy__oL","p08_5o9d7UKp"],["pyK5nXWwq5Oo","M8XylWafSRfr"],["1ObU1E0sc1d7","1g5EHfMgMNwD"],["j6qjqDbi_XQF","vB27yr5gbL80"],["8CLjvzBPmxwU","W3Go0Yc12edf"],["p0mZl0LqBWCm","jYNncrX8DXlB"],["h6ZvFwh7trSd","5D-1sCgsim9C"],["GWWi0UjJp_zO","afaZ7lL_eR_y"],["pmwayLaCDf-k","Hb10bufiO3LK"],["Dq550vx3Td_Z","PucHcdYzgAR3"],["Aw_KndW3Wvpt","xxeAhsbe6Sfa"],["wUj_JF3Uv-rw","pUHDMdWzedbS"],["77TOvkkolUfZ","kEDE1L0w5FKq"],["UGAI8O444nFf","HoZP0mxbWZ3B"],["jP-_ZYFldW2c","jl-qea7pjvrT"]],"surveys":[["u5TJ9-nL00uV"],["75h0Uvou7ijr"],["oBjMRZQ2QyOF"],["4vgJhlz42Th3"],["PvPl442OXlH2"],["l_o5Is9uKxhK"],["VY9H2_7QwDnG"],["JInEBj6TZeWq"],["7ieeg9J2ZdeB"],["5AWM-mKbZhgd"],["y_x5rbxnTGZE"],["QofqBGmeVcJS"],["JWnY4kFk1Cq4"],["NdqGd8Oc74D_"],["LSjT4UeLIA8n"],["qFDn2JD0JbKl"],["XZrGAa9SqFYt"],["3JQPr8M_K0uf"],["9E2T9z2pfNhx"],["WZYZiwCO6OLd"]],"tourGuide":[["Evz5gZtP5b0a","8uz4k71t3lEh"],["JHUdIZSd0bNI","d8Nj9BPxFFOt"],["-V8SI3C3bu8S","st6jkbhzAqk5"],["vGsd7HRAZ8SJ","0zXfXg60tZ4I"],["z2MHaEZ2uD31","Aa6hn4jtXWel"],["kW4Art5k5B-R","t0spezf2b0OG"],["psSLqb23CI3o","j5g_KpfDsa2e"],["SUkoLKBKGuX7","aogKP7OKLeGA"],["y6elXb9Y5S7r","hRU83jSFG6Pm"],["lamMxWXect8C","-nNTkTPkpiWf"],["CJqhqKgLVgJw","djBC9BlEeII2"],["6fdaJilOmr7g","dMjUBXmxVOu-"],["kn85p-VBLCY5","8JMXlQqa-UEo"],["bxW6gatLgX39","pe4YdkQG9cVE"],["GXOjyyJdIEld","LfYVAiAyruC_"],["_0wEC-nUc-TL","xRh0gD10u6Q2"],["hZGRRTk9bwEv","ZBhjGiC9aQML"],["G2C82Xy0hFQv","yBlU4dtQD7bM"],["F7D_jAkcnb9a","zqQ1wOCDNnWp"],["Evz5gZtP5b0a","8uz4k71t3lEh"]],"uiDefinition":[["HpPRhYJLYEF8","B7PD1MrzXEvN"],["clbfpnA6ASj0","5Vz_YmPJyWZ1"],["-icDFziQqCCR","A6dGT4LpHSz1"],["k0aa2y7MsGFf","7kMXGl9AMhQK"],["7iZdAVFY7A0_","rAar-HnoXTXL"],["bOtx6VKhHDWH","KB4BcLB-ZuhB"],["QzuwPLi1P5pU","8KTNghiWYKUA"],["__kr3fZQdfOM","NeHoQTKikdDJ"],["d1RiZE6nrey8","tiuEs0M1Ymb3"],["JO7C7S6yf7l4","xh7RFZHoc-ab"],["uFO7QKLx4noz","as2e_pG4sV2X"],["xIWsszZMug86","5m9VVvSb9_qg"],["-KnGDSr5S9Zl","QfJ5aJkmqr1e"],["9WFY72TbFeDT","kC58WijPCp-5"],["LI85nb9Ya5JT","JIwREiieai01"],["i1YaeUvs6cGf","M_rg9Lv8bXuX"],["9UNVkDlH87Fa","2u_EWfYU1K1L"],["i1m9rO_iBEoY","oLuB4BDWbMHy"],["ChOsyjp3cI9g","Jc32eWGymJXd"],["HpPRhYJLYEF8","B7PD1MrzXEvN"]]},"extensionsPageVersion":{"AppInsightsExtension":["1.0.20241219.2257","1.0.20250106.2349"],"AppPlatformExtension":["1.0.02867.308"],"AzureCacheExtension":["1.3.02875.422"],"AzureTfsExtension":["19.247.35422.10"],"Azure_Marketplace_Astronomer":["0.9.028731-484067"],"Azure_Marketplace_Confluent":["0.9.0287814-460370"],"Azure_Marketplace_Datadog":["2.2101.028732-8148805"],"Azure_Marketplace_Dell":["0.9.028251-109367"],"Azure_Marketplace_Dynatrace":["0.9.029281-38099"],"Azure_Marketplace_Elastic":["0.1.028752-867720"],"Azure_Marketplace_Informatica":["0.9.028801-5467"],"Azure_Marketplace_Liftr_Logz":["0.9.028681-288"],"Azure_Marketplace_Liftr_NewRelic":["0.9.028791-182848"],"Azure_MarketPlace_NativeISVService":["0.9.0287826-94422","0.9.0289527-2972966"],"Azure_Marketplace_Neon":["0.9.028611-398878"],"Azure_Marketplace_NGINX":["2.2101.028681-150416"],"Azure_Marketplace_PaloAltoNetworks_Cloudngfw":["1.0.0.241217-0719"],"Azure_Marketplace_PureStorage":["0.9.029231-085211","0.9.029291-4748"],"Azure_Marketplace_Qumulo":["0.1.028732-427870"],"Azure_Marketplace_SamplePartner":["0.9.026611-97"],"Azure_Marketplace_SolarWindsObservability":["0.9.028741-97813"],"Azure_Marketplace_SplitIO":["1.0.028671-84714"],"DxExtension":["14.216.1.114.216.0.19852.241025-1953"],"HubsExtension":["14.232.2.114.232.0.192030.241204-1800/Zibck4M3AFmV"],"Microsoft_AAD_AuthenticationMethods":["1.0.02811103"],"Microsoft_AAD_B2CAdmin":["1.1.721.0"],"Microsoft_AAD_ConditionalAccess":["1.0.02899807"],"Microsoft_AAD_Connect_Provisioning":["3.0.02892991"],"Microsoft_AAD_DecentralizedIdentity":["1.0.02885406"],"Microsoft_AAD_Devices":["1.0.02868505"],"Microsoft_AAD_DomainServices":["2.0.170.0"],"Microsoft_AAD_DXP":["1.0.02895.1329-"],"Microsoft_AAD_ERM":["1.2.870.355"],"Microsoft_AAD_HybridAuthentication":["1.0.02655.90"],"Microsoft_AAD_IAM":["3.0.029001752"],"Microsoft_AAD_IdentityProtection":["1.0.02872276"],"Microsoft_AAD_LifecycleManagement":["1.0.02901.244"],"Microsoft_AAD_RegisteredApps":["1.0.2896.1143"],"Microsoft_AAD_UsersAndTenants":["1.0.02892.1202-352"],"Microsoft_AzureCXP_BusinessReview":["0.1.4138"],"Microsoft_AzureCXP_Cpoe":["0.1.3992"],"Microsoft_AzureCXP_EngageHub":["0.1.4208"],"Microsoft_AzureCXP_EngageHubInsights":["0.1.4024"],"Microsoft_AzureCXP_EngageHub_Spaces":["0.1.3950"],"Microsoft_AzureCXP_EngageHub_Support":["0.1.4261-0001"],"Microsoft_AzureStackHCI_PortalExtension":["1.0.028923178"],"Microsoft_AzureStack_LabHardware":["1.0.850.0"],"Microsoft_Azure_ActivityLog":["3.0.02782.235"],"Microsoft_Azure_AD":["1.0.4309.0","1.0.4341.0"],"Microsoft_Azure_ADHybridHealth":["2.0.02872241"],"Microsoft_Azure_ADU":["3.0.0.4"],"Microsoft_Azure_AdvisorPortalExtension":["1.0.02850.280"],"Microsoft_Azure_AFDX":["1.8.028961464"],"Microsoft_Azure_AgFoodPlatform":["1.0.0.89"],"Microsoft_Azure_AnalysisServices":["1.2.2.63"],"Microsoft_Azure_Analytics":["1.0.02879.1"],"Microsoft_Azure_ANMVerifier":["1.0.02852.93-234","1.0.02872.101-22"],"Microsoft_Azure_AO5GC":["1.0.0.0-2404250546"],"Microsoft_Azure_AP5GC":["2-2410080600","2-2411130747"],"Microsoft_Azure_ApiManagement":["1.1008.0.1"],"Microsoft_Azure_APISecurity":["1.24.12.202016"],"Microsoft_Azure_AppComplianceAutomation":["202411190218"],"Microsoft_Azure_Appliance":["4.0.300.192","4.0.200.137"],"Microsoft_Azure_AppProtection":["1.0.02842.54","1.0.02920.114"],"Microsoft_Azure_ArcCenterUX":["1.0.60.0","1.0.63.0"],"Microsoft_Azure_ArcClusterUX":["1.0.1063.0","1.0.1060"],"Microsoft_Azure_ArcNetworking":["1.4.1.11"],"Microsoft_Azure_ASCInformationProtection":["1.24.12.221028"],"Microsoft_Azure_Attestation":["1.0.14.232.0"],"Microsoft_Azure_AutoManagedVirtualMachines":["1.0.02854.456"],"Microsoft_Azure_AutomaticAKS":["4.12.0.2879"],"Microsoft_Azure_Automation":["7.3.2932.0.241115-0022"],"Microsoft_Azure_AzConfig":["1.0.02872126-1"],"Microsoft_Azure_AzFleet":["5.13.393.1807-1729806492-","5.13.393.1893"],"Microsoft_Azure_Batch":["1.1.02927.368"],"Microsoft_Azure_BCDRCenter":["1.0.02858.1262"],"Microsoft_Azure_Billing":["24.11.02900.175-6330","1.0.02921.1159-120496"],"Microsoft_Azure_BotService":["1.4.1.400371"],"Microsoft_Azure_Capacity":["241122-0516"],"Microsoft_Azure_Cdn":["1.0.02902.416--68770"],"Microsoft_Azure_ChangeAnalysis":["1.0.02852.117"],"Microsoft_Azure_Chaos":["1.0.0-1.0.02859.2-20600","1.0.0-1.0.02923.1-96"],"Microsoft_Azure_ClassicResources":["1.0.10.153"],"Microsoft_Azure_Classic_Compute":["5.13.393.1659"],"Microsoft_Azure_CloudforSovereignty":["1.0.241025.2416"],"Microsoft_Azure_CloudHSM":["1.0.02853.220","1.0.02861.221"],"Microsoft_Azure_CloudNative":["5.13.393.1819","5.13.393.1873"],"Microsoft_Azure_CloudNativeTesting":["2024102820241028.1","2024102820241125.2"],"Microsoft_Azure_CloudPC":["1.0.241212.112391938"],"Microsoft_Azure_CloudServices":["5.13.393.1807-1729702289-"],"Microsoft_Azure_CloudServices_Arm":["5.13.393.1807-1729806510-"],"Microsoft_Azure_CloudTest":["2.0.20250107.1"],"Microsoft_Azure_CodeOptimizations":["1.0.02853.40"],"Microsoft_Azure_CodeSigning":["1.0.20241211.103"],"Microsoft_Azure_CommunicationServices":["1.0.20241216.2"],"Microsoft_Azure_CommunicationsGatewayExtension":["2.0.0.0"],"Microsoft_Azure_CommunityTraining":["1.0.8.1"],"Microsoft_Azure_ComplianceCenter":["1.0.0.20250107064429"],"Microsoft_Azure_Compute":["5.13.393.1807-1733508958-","5.13.393.1893"],"Microsoft_Azure_ComputeHub":["5.13.393.1807","5.13.393.1893"],"Microsoft_Azure_ConfidentialLedger":["23.3.7.2"],"Microsoft_Azure_ConfigManager":["20241204.2"],"Microsoft_Azure_ContainerInsightsExt":["2.0.20241023.2014","2.0.20250107.2318"],"Microsoft_Azure_ContainerRegistries":["1.0.20240829.9"],"Microsoft_Azure_ContainerService":["4.60.1.101/1EqRKWy2d0SP","5.13.393.1894/vI1KG2-BOeC1"],"Microsoft_Azure_ContainerStorage":["5.13.393.1697","5.13.393.1698"],"Microsoft_Azure_Copilot":["1.311.02882.591","1.200.02872.577"],"Microsoft_Azure_CostManagement":["241204-0558"],"Microsoft_Azure_CreateUIDef":["1.0.300.338","1.0.200.604"],"Microsoft_Azure_CtsExtension":["1.2.1.0"],"Microsoft_Azure_CustomerHub":["1.0.300.165","1.0.300.167"],"Microsoft_Azure_Dashboard":["2.0.1890.0"],"Microsoft_Azure_DatabaseInsights":["1.0.02854.428"],"Microsoft_Azure_Databricks":["1.0.02855.267"],"Microsoft_Azure_DataCollaboration":["2.0.20230315-0800"],"Microsoft_Azure_DataFactory":["1.0.20241024.1"],"Microsoft_Azure_DataLakeAnalytics":["20240906.1"],"Microsoft_Azure_DataLakeStore":["5.13.393.1735"],"Microsoft_Azure_DataProtection":["241029-102415"],"Microsoft_Azure_DataShare":["2.0.20241211-0201","2.0.20241211-0102"],"Microsoft_Azure_Dedicated_ClusterStor":["240909-1921"],"Microsoft_Azure_Dedicated_Cray":["240909-1921"],"Microsoft_Azure_Dedicated_Monitoring":["240909-1921"],"Microsoft_Azure_DetonationService":["2.00.00.03"],"Microsoft_Azure_DevCenter":["14.170.0.1.241114-1814"],"Microsoft_Azure_DeviceRegistry":["1.0.02871.97-111120"],"Microsoft_Azure_DeviceUpdate":["1.0.02843.128-101415"],"Microsoft_Azure_DevOpsInfrastructure":["1.0.20250107.1"],"Microsoft_Azure_DevTestLab":["14.170.0.1.241127-2113"],"Microsoft_Azure_DevTunnels":["1.0.231005.2128","1.0.230613.1659"],"Microsoft_Azure_DigitalTwins":["1.0.02829.187-093022"],"Microsoft_Azure_DiskMgmt":["5.13.393.1804-1730162051-","5.13.393.1893"],"Microsoft_Azure_DMS":["5.1.6396.3"],"Microsoft_Azure_DNS":["1.0.02867.222","1.0.02928.243"],"Microsoft_Azure_DNSManagedResolver":["1.0.02816.276","1.0.02927.282"],"Microsoft_Azure_DnsSecurityPolicy":["1.0.02878.100"],"Microsoft_Azure_DocumentDB":["2.0.20241115.7.0","2.0.20250101.1.0"],"Microsoft_Azure_DocumentManagement":["1.0.02852.2"],"Microsoft_Azure_Ea":["20241212.2"],"Microsoft_Azure_EASM":["1.0.02900.1469"],"Microsoft_Azure_ECE":["1.0.02748.15-652409","1.0.02844.22-206"],"Microsoft_Azure_EdgeAIExtension":["1.0.02908.28"],"Microsoft_Azure_EdgeGateway":["1.0.02825.1545"],"Microsoft_Azure_EdgeManagementCopilot":["1.0.02854.246"],"Microsoft_Azure_EdgeOrder":["1.0.02894393"],"Microsoft_Azure_Education":["2024.11.26-1726"],"Microsoft_Azure_ElasticSan":["5.13.393.1807-1731535885-","5.13.393.1893"],"Microsoft_Azure_ELMAdmin":["2.77.02911.2151"],"Microsoft_Azure_EMA":["2.41028.1.6","2.41028.1.12"],"Microsoft_Azure_EmailCommunicationServices":["66616971"],"Microsoft_Azure_EpicManagement":["1.2.10205.10621"],"Microsoft_Azure_EventGrid":["2.0.02871.233"],"Microsoft_Azure_EventHub":["2.0.02879.345"],"Microsoft_Azure_Experimentation":["2.0.02895.64"],"Microsoft_Azure_Expert":["1.20241028.1","1.20241101.1"],"Microsoft_Azure_ExpressPod":["1.0.0"],"Microsoft_Azure_FairfieldGardens":["1.0.02837.66-100800"],"Microsoft_Azure_FileShare":["5.13.393.1803","5.13.393.1864"],"Microsoft_Azure_FileStorage":["5.13.393.1803","5.13.393.1851"],"Microsoft_Azure_FIST":["2024.10.02.160055","2024.06.13.181824"],"Microsoft_Azure_FlowLog":["2.0.0.306.241021-2045"],"Microsoft_Azure_FluidRelay":["1.0.2.4.241014-1713"],"Microsoft_Azure_Frontdoor":["1.0.02793.355--71340517","1.0.02858.386--179125"],"Microsoft_Azure_GeneratedExtension":["1.200.02858.681"],"Microsoft_Azure_GlobalView":["1.0.0.5"],"Microsoft_Azure_GraphDataConnect":["1.20241010.6.0"],"Microsoft_Azure_GTM":["24.12.02904.389-3707","1.0.02913.2615-10063"],"Microsoft_Azure_HDInsight":["1.0.02859.1610"],"Microsoft_Azure_Health":["1.1.1.465","1.1.1.469"],"Microsoft_Azure_HealthBot":["1.0.0.112"],"Microsoft_Azure_HealthDataDeidentification":["1.0.49698.1"],"Microsoft_Azure_HealthModels":["0.2023.78.333"],"Microsoft_Azure_HybridCompute":["1.0.4277.0","1.0.4301.0"],"Microsoft_Azure_HybridData_Platform":["1.0.02901.212"],"Microsoft_Azure_HybridNetworking":["24.8.0.63-241023-2106"],"Microsoft_Azure_IacAutomation":["0.0.1.241017-0944","0.0.1.241018-0643"],"Microsoft_Azure_IdentityGovernance":["1.0.02871.241"],"Microsoft_Azure_IndustrySolutionCenter":["1.0.241111-0553"],"Microsoft_Azure_IoTCentral":["2.0.9070.41921"],"Microsoft_Azure_IotHub":["1.0.02860.545-103117"],"Microsoft_Azure_IoTOperations":["1.0.02881.174-112117"],"Microsoft_Azure_IoT_Defender":["2025-01-01--11-26-39"],"Microsoft_Azure_IPAddressManager":["1.0.02859.150-2636459"],"Microsoft_Azure_Kailani":["5.13.393.1803-1733785378-","5.13.393.1893"],"Microsoft_Azure_KeyVault":["1.2.298.0.241021-1530"],"Microsoft_Azure_Kusto":["1.0.2418.0"],"Microsoft_Azure_LocationServices":["3.0.02871.271"],"Microsoft_Azure_Lockbox":["2.62.0.0"],"Microsoft_Azure_Maintenance":["5.13.393.1807-1729702031-","5.13.393.1893"],"Microsoft_Azure_ManagedHSM":["1.0.02861.409-262501","1.0.02928.482-8060"],"Microsoft_Azure_ManagedLab":["14.226.0.1.241231-1943"],"Microsoft_Azure_ManagedNetwork":["1.0.02859.162-866","1.0.02928.190-2135"],"Microsoft_Azure_ManagedServiceIdentity":["2.1.8974.0"],"Microsoft_Azure_ManagedStorageClass":["1.4.0.202410290745","1.4.0.202411050815"],"Microsoft_Azure_Marketplace":["50.0.02899.41-23270","30.0.02928.35-02549"],"Microsoft_Azure_MarketplaceTransact":["1.0.20241212.4173"],"Microsoft_Azure_Media":["1.0.1421.0"],"Microsoft_Azure_Migrate":["1.0.10.509"],"Microsoft_Azure_MigrateAssessment":["1.0.10.4"],"Microsoft_Azure_MigrateModernization":["1.51.1240903.11134"],"Microsoft_Azure_MLTeamAccounts":["1.0.0.241219-2106"],"Microsoft_Azure_ModSimWorkbench":["0.10.10.2"],"Microsoft_Azure_Monitoring":["22.20241030.2.0.02859.431"],"Microsoft_Azure_MonitoringMetrics":["2.0.20241017.1618","2.0.20250107.1715"],"Microsoft_Azure_Monitoring_Alerts":["1.0.02824.1331","1.0.02891.1370"],"Microsoft_Azure_NetApp":["2407.3.0.1"],"Microsoft_Azure_Network":["5.13.393.1821","5.13.393.1863"],"Microsoft_Azure_NetworkCloud":["5.9.0","5.858.0-1"],"Microsoft_Azure_NetworkCopilot":["1.0.02927.120-5797234"],"Microsoft_Azure_NetworkCopilotExtension":["1.0.02927.52-9799"],"Microsoft_Azure_NetworkingCopilot":["1.0.02873.108-2"],"Microsoft_Azure_NetworkSecurityPerimeter":["1.35.0.185"],"Microsoft_Azure_Network_Access":["1.0.02923.1585"],"Microsoft_Azure_NotificationHubs":["20241218.3.241218-1139"],"Microsoft_Azure_OneInventory":["1.0.02887.222"],"Microsoft_Azure_OneMigrate":["1.0.10.44"],"Microsoft_Azure_OpenEnergyPlatform":["1.0.206"],"Microsoft_Azure_OperationsMgr":["1.2.361.0"],"Microsoft_Azure_OpsMQ":["1.0.02734.96-062721"],"Microsoft_Azure_Orbital":["2024.10.02923.509"],"Microsoft_Azure_OSSDatabases":["2.1.02859122"],"Microsoft_Azure_PaasServerless":["5.246.1.3","5.247.0.2"],"Microsoft_Azure_Peering":["1.2.0.255"],"Microsoft_Azure_PIMCommon":["0.0.0.961"],"Microsoft_Azure_PinToGrafana":["1.2.154.1"],"Microsoft_Azure_Playground":["14.115.4.1"],"Microsoft_Azure_PlaywrightService":["1.0.0.43"],"Microsoft_Azure_Policy":["1.0.9.704"],"Microsoft_Azure_PortalDashboard":["1.100.02850.547","1.100.02928.557"],"Microsoft_Azure_PowerBIDedicated":["1.1.2823.1"],"Microsoft_Azure_PowerPlatform":["0.0.0.72"],"Microsoft_Azure_PrivateDNS":["1.0.02875.231","1.0.02928.241"],"Microsoft_Azure_PrivateModSimWorkbench":["0.10.10.2"],"Microsoft_Azure_ProgrammableConnectivity":["1.1.74","2.111.0-1"],"Microsoft_Azure_ProjectBabylon":["1.0.20241226.422","1.0.20240729.400"],"Microsoft_Azure_ProjectOxford":["241205-0551"],"Microsoft_Azure_Quantum":["1.11.2.4"],"Microsoft_Azure_RecommendationsService":["9.32.02744.262"],"Microsoft_Azure_RecoveryServices":["3.40.2411.283"],"Microsoft_Azure_Relay":["2.0.02851.179"],"Microsoft_Azure_Reservations":["11.19.2024.2050"],"Microsoft_Azure_ResourceMove":["1.1.10909.10739"],"Microsoft_Azure_Resources":["1.0.100.1000","1.0.100.1015"],"Microsoft_Azure_RpExt":["2.0.0.0"],"Microsoft_Azure_SaasHub":["1.0.02894.57-032"],"Microsoft_Azure_SapHanaInstances":["1.0.50.147"],"Microsoft_Azure_SAPManagement":["2.1.11015.10506"],"Microsoft_Azure_SAPMigrate":["1.2.10908.12138"],"Microsoft_Azure_Search":["149376413.20241114.1"],"Microsoft_Azure_Security":["1.25.01.072002"],"Microsoft_Azure_Security_AzureDefenderForData":["1.25.01.061251"],"Microsoft_Azure_Security_CloudNativeCompute":["1.24.12.311812"],"Microsoft_Azure_Security_DevOps":["1.25.01.032223"],"Microsoft_Azure_Security_Insights":["1.0.02923.465-250102-085937","1.0.02928.466-250107-093237"],"Microsoft_Azure_Security_IoT":["2024-12-29--08-15-43"],"Microsoft_Azure_Security_R3":["1.25.01.071638"],"Microsoft_Azure_SentinelUS":["1.0.02924.5502-250103-1623","1.0.02929.5517-250108-1419"],"Microsoft_Azure_ServiceBus":["2.0.02878.214"],"Microsoft_Azure_ServiceFabric":["5.13.393.1807-1729806504-"],"Microsoft_Azure_ServiceHub":["1.300.02860.75"],"Microsoft_Azure_SignalR":["1.0.02880.70--9565"],"Microsoft_Azure_SiteManager":["1.0.02888620"],"Microsoft_Azure_SiteRecovery":["1.51.12410.198"],"Microsoft_Azure_SolutionCenter":["5.13.393.1780","5.13.393.1875"],"Microsoft_Azure_Sphere":["2.0.25002.2"],"Microsoft_Azure_SpringApps":["20241218.1"],"Microsoft_Azure_Stack_Migrate":["2.241101.1914.1"],"Microsoft_Azure_Storage":["5.13.393.1803-1730161979-","5.13.393.1893"],"Microsoft_Azure_StorageCache":["1.1.0.1109"],"Microsoft_Azure_StorageInsights":["4.13.393.1126"],"Microsoft_Azure_StorageMover":["5.13.393.1803","5.13.393.1893"],"Microsoft_Azure_StorageTasks":["5.13.393.1803-1729816167-","5.13.393.1893"],"Microsoft_Azure_StreamAnalytics":["20241119.2"],"Microsoft_Azure_SubscriptionManagement":["1.0.02899.236.20241209-1952"],"Microsoft_Azure_Support":["1.580.20241107.1","1.580.20241029.1"],"Microsoft_Azure_Surface":["2.56.0"],"Microsoft_Azure_Sustainability":["1.0.1.173"],"Microsoft_Azure_Synapse":["1.0.02875.5"],"Microsoft_Azure_TemplateSpecs":["1.0.1.91"],"Microsoft_Azure_Toolbox":["2.0.02847.298"],"Microsoft_Azure_UsageBilling":["1.0.02805.11"],"Microsoft_Azure_VirtualEnclaves":["2.1.235.0"],"Microsoft_Azure_VirtualVisitsBuilder":["1.0.0.20240509190151576"],"Microsoft_Azure_VnfManager":["1.9.0","1.79.0-1"],"Microsoft_Azure_WaveMigration":["1.0.10.6"],"Microsoft_Azure_WhatsNew":["1.0.02900138"],"Microsoft_Azure_Winfields":["1.0.028335"],"Microsoft_Azure_WorkbooksExtension":["1.24.02857.421","1.24.02860.423"],"Microsoft_Azure_WorkloadInsight":["1.0.02819.95"],"Microsoft_Azure_WorkloadInsights":["2.0.20241008.1902","2.0.20241030.1727"],"Microsoft_Azure_WorkloadMonitor":["1.2.10924.10947","3.1.10107.10723"],"Microsoft_Azure_WVD":["1.0.02893.601"],"Microsoft_Bing_Api":["241212-1134"],"Microsoft_CloudHealth_HealthModels":["1.0.02907.87"],"Microsoft_Cognition_MixedReality":["36.0.0.0"],"Microsoft_ConnectedCache":["1.0.3.11"],"Microsoft_ConnectedCache_Ent":["1.0.0.2.25"],"Microsoft_ConnectedCache_Enterprise":["1.0.0.1.15"],"Microsoft_ConnectedCache_ISP":["1.0.0.1.48"],"Microsoft_EMM_ModernWorkplace":["1.2412.201.02"],"Microsoft_Entra_PM":["2025.1.7.1"],"Microsoft_Entra_PMAnalytics":["2024.10.11.1-105554065"],"Microsoft_Entra_PMDashboard":["2024.11.20.1-108585238"],"Microsoft_Healthcare_APIs":["1.0.554184.1","1.0.554553.1"],"Microsoft_Intune":["1.2412.15.3002.241216-2320"],"Microsoft_Intune_Apps":["2.2412.39.3002.241214-1836"],"Microsoft_Intune_DeviceExplorer":["1.0.241205.054721"],"Microsoft_Intune_Devices":["6.2412.38.3005.241218-1933"],"Microsoft_Intune_DeviceSettings":["1.2412.75.3011.250103-2300"],"Microsoft_Intune_Edu":["6.2412.14.3003.241216-2006"],"Microsoft_Intune_Enrollment":["7.2412.45.3003.241216-2046"],"Microsoft_Intune_MTM":["6.2410.1.50"],"Microsoft_Intune_Workflows":["1.2412.82.3002.241217-0650"],"Microsoft_ManufacturingPlatform_DMM":["19.11.2024"],"Microsoft_Marketplace_SolutionFinder":["1.0.20250108.1"],"Microsoft_OneFleet_DataHub":["1.0.02859.268"],"Microsoft_OperationsManagementSuite_Workspace":["3.0.02881.2173","3.0.02920.2221"],"Microsoft_Research_Genomics":["1.0.0.13929"],"Microsoft_Security_Copilot":["93"],"Microsoft_ServicesHub_Extension":["5.5.9.0"],"Microsoft_VideoIndexer":["1.0.02860.1-241031"],"Oracle_Databases_At_Azure":["1.164.0"],"ScanX_Management":["3.0.0.3"],"ServiceLinkerExtension":["2.0.20250106.1"],"SqlAzureExtension":["2.1.02901237"],"Universal_Print":["3.20241115.2"],"VLCentral_Agreement":["1.0.02903.1"],"VLCentral_Amendments":["1.0.02881.26"],"VLCentral_Approval":["1.0.02929.1"],"VLCentral_CaseManagement":["1.0.02879.2"],"VLCentral_HelpAndSupport":["1.0.02896.1"],"VLCentral_Home":["1.0.02894.1"],"VLCentral_OrderCredits":["1.0.02903.2","1.0.02894.2"],"VLCentral_Ordering":["15.0.02928.1"],"VLCentral_OrganizationManagementService":["1.0.02857.2"],"VLCentral_Platform":["1.0.02899.1"],"VLCentral_Quote":["1.0.02903.1"],"VLCentral_ReportingNAnalytics":["1.0.02896.1"],"VLCentral_UUM":["1.0.02865.54"],"VMCP":["1.2.02857.915","1.2.02866.925"],"WandiscoExtension":["1.14.16.0"],"WebsitesExtension":["5.246.3.3","5.247.0.2"]}},"signinUri":"/signin/idpRedirect.js/","errorUri":"/Error","unsupportedUri":"/Error/UE_Unsupported","applicationPath":"","supportedLanguages":["en","cs","de","es","fr","hu","id","it","ja","ko","nl","pl","pt-br","pt-pt","ru","sv","tr","zh-hans","zh-hant","qps-ploc"],"portalClientId":"c44b4083-3bb0-49c1-b47d-974e53cbdf3c","authority":"https://login.microsoftonline.com/","armAadResource":"https://management.core.windows.net/","tokenLifetimeClockSkewIntervalInMs":300000.0,"graphEndpoint":"https://graph.windows.net","orgIdChangePasswordUri":"https://go.microsoft.com/fwlink/?LinkID=522342","changePasswordUri":"https://go.microsoft.com/fwlink/?LinkID=522343","isAdfs":false,"roleIdForCompanyAdmin":"62e90394-69f5-4237-9190-012177145e10"},"portalServerMsalJsConfig":{"site_id":"501430","cobrandid":null,"msafed":null,"nativeBroker":0}});
|
4 |
+
</script></body></html>
|
download (2).htm
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html><html><head><meta charset='utf-8'/><title>Microsoft Azure</title></head><body><script>"use strict";var FxImpl,__extends,__assign,__rest,__decorate,__param,__esDecorate,__runInitializers,__propKey,__setFunctionName,__metadata,__awaiter,__generator,__exportStar,__values,__read,__spread,__spreadArrays,__spreadArray,__await,__asyncGenerator,__asyncDelegator,__asyncValues,__makeTemplateObject,__importStar,__importDefault,__classPrivateFieldGet,__classPrivateFieldSet,__classPrivateFieldIn,__createBinding,__addDisposableResource,__disposeResources,MsPortalImpl;!function(e){let t,r;try{t=window.localStorage,r=window.sessionStorage}catch(e){}e.localStorage=t,e.sessionStorage=r}(MsPortalImpl||(MsPortalImpl={})),function(e){e.getOrSetBootParameters=function(e,t){if(1===arguments.length)return e.sessionStorage.getItem("Redirect_BootParameters")||e.localStorage.getItem("Redirect_BootParameters");e.sessionStorage.setItem("Redirect_BootParameters",t),e.localStorage.setItem("Redirect_BootParameters",t)}}(MsPortalImpl||(MsPortalImpl={})),function(e){e.getTenantFromPath=function(e,t){const r=e.split("/").filter((e=>e));let n="";if(1===r.length?n=r[0]:e.startsWith("/auth/login")&&3===r.length&&(n=r[2]),n){const e=n.replace(/^@*/,""),r=/^[a-f0-9]{8}-(?:[a-f0-9]{4}-){3}[a-f0-9]{12}$/i;if(/^@?(?:(?:[a-z0-9]|[a-z0-9][a-z0-9-]{0,61}[a-z0-9])\.)+[a-z0-9]+|common$/i.test(e)||r.test(e))return t?"@"+e:e}return""}}(MsPortalImpl||(MsPortalImpl={})),function(e){var t=new Uint8Array(20),r=new Array(20);function n(e,r,n){var o=t[e]&r;t[e]=o|n}var o=window.crypto||window.msCrypto,a="0123456789abcdef".split(""),s=new Array(256),i=0;function c(){var e=function(e){for(var t,r=new Array(e);e;){t=4294967296*Math.random()|0;for(var n=8;n--;){if(r[--e]=a[15&t],e<0)return r;t>>>=4}}}(36);return e[8]=e[13]=e[18]=e[23]="-",e[14]="4",e[19]=a[8+(3&a.indexOf(e[19]))],e.join("")}a.forEach((function(e){a.forEach((function(t){s[i++]=e+t}))})),e.createGuid=function(e,a){void 0===a&&(a=!1);var i=o?function(){o.getRandomValues(t),n(8,15,64),n(11,63,128);for(var e=0;e<20;e++)r[e]=s[t[e]];return r[4]=r[7]=r[10]=r[13]="-",r.join("")}():c();return i=a?i.split("-").join("").substring(0,32):i.substring(0,36),(e?"".concat(e,"_"):"")+i}}(FxImpl||(FxImpl={})),function(e){e.supportedLanguagesNeutralLocales={de:"de-de",en:"en-us",es:"es-es",fr:"fr-fr",it:"it-it",id:"id-id",hu:"hu-hu",nl:"nl-nl",pl:"pl-pl","pt-br":"pt-br","pt-pt":"pt-pt",sv:"sv-se",tr:"tr-tr",cs:"cs-cz",ru:"ru-ru","zh-hans":"zh-cn","zh-hant":"zh-hk",ja:"ja-jp",ko:"ko-kr"};const t={"zh-hk":"zh-hant","zh-tw":"zh-hant","zh-cht":"zh-hant","zh-mo":"zh-hant",zh:"zh-hans",pt:"pt-br"};function r(e){const t=[];for(let r=(e=e||"").length;r>0;r=e.lastIndexOf("-",r-1))t.push(e.substring(0,r));return t}e.sanitizeLanguage=function(t,r){const n=(t||"").toLowerCase().split(".");if(r.includes(n[0])||(n[0]=r[0]),n.length<2){const t=e.supportedLanguagesNeutralLocales[n[0]];t&&(n[1]=t)}return n.join(".")},e.getBrowserLanguage=function(n){const o=(n||navigator.languages||[]).map((e=>e?.toLowerCase?.()));for(const n of o){const o=r(n);for(const r of o){const o=t[r]||r;if(o in e.supportedLanguagesNeutralLocales){const t=o;return`${t}.${n.split("-").length>1?n:e.supportedLanguagesNeutralLocales[t]}`}}}}}(MsPortalImpl||(MsPortalImpl={})),function(e){let t=window;function r(e){return e&&e.replace(/^\?/,"")}function n(e){return e&&r(e).split("&").map((e=>e.split("=")))||[]}function o(e,t){const r=e.map((e=>e[0]&&e.join("=")));return t&&r.sort(),r.join("&")}function a(e,t,r){if(t=t.toUpperCase(),e)for(let n=0;n<e.length;n++)if(e[n][0].toUpperCase()===t)return r?e.splice(n,1)[0][1]:e[n][1]}function s(){return JSON.parse(e.getOrSetBootParameters(e)||"{}")}function i(e){return a(n(s().userQuery),e)}function c(e){if(!e||e.startsWith("/"))return c(`${t.location.protocol}//${t.location.host}`);const r=/^(\w+:\/\/)([^:/?]+)([^/?]+)?/.exec(e),n=r[3]||("https://"===r[1]?":443":":80");return r[2]+n}function l(t,s,l,u){l=l||"",u=u||{};let f="";if(t&&c()===c(t))f=function(t,r,s){const c=n(t),l=e=>{Object.keys(e).forEach((t=>{t&&e[t]&&"string"!=typeof a(c,t)&&c.push([t,e[t]])}))};if(l(JSON.parse(e.localStorage.getItem("Redirect_LocaleQuery")||"{}")),l({l:e.localStorage.getItem("Redirect_LastUsedLocale")}),r.env){const t={},n=(n,o,a)=>{o=o||["true","false"];const s=n+(a||"");let c=i(n)||r[n];c||(c=e.localStorage.getItem(s)+"",o.includes(c)||(c=o[Math.floor(Math.random()*o.length)],e.localStorage.setItem(s,c))),t[n]=c},o=new Array(100);o.fill("DefaultPartitioner",0,100),n("bundlingKind",o,"12"),l(t)}l(r),["signIn","clearedStorage"].forEach((e=>{a(c,e,!0)}));const u=a(c,"l",!0)||e.getBrowserLanguage();return l({l:e.sanitizeLanguage(u,s)}),o(c,!0)}(l,u,s);else{const e=u.loginHint;e&&(l+=l?"&":"",l+=`loginHint=${e}`),f=r(l)}return f&&(t+=t.includes("?")?"&":"?",t+=f),t}e.parseQuery=n,e.extractValueFromQueryString=function(e,t){return a(e,t,!1)},e.getFirstQueryValue=a,e.getBootParameters=s,e.trySaveAllowedState=function(r,n,i,c){if(!e.getOrSetBootParameters(e)||i){["selectAccount","loginHint","signInParameters","forcesignin","nonceErrorSeen","signIn","slice","mfalogin"].forEach((e=>{a(n,e,!0)}));const i=/#.*|$/.exec(t.location.href)[0];let l;i.startsWith("#code=")?(l=s(),l.msalHash=i):l={environment:r,userQuery:o(n),portalQuery:c,hash:i,msalHash:void 0},e.getOrSetBootParameters(e,JSON.stringify(l))}},e.savePageTelemetry=function(r){const n=t.performance&&t.performance.timing;if(n){const t={id:r,fetchStart:n.fetchStart,requestStart:n.requestStart,responseStart:n.responseStart,responseEnd:n.responseEnd,domComplete:n.domComplete};e.sessionStorage.setItem(`PageTelemetry_${r}`,JSON.stringify(t))}},e.getUserQueryValue=i,e.getPortalUri=function(e,t,r){r=r||{};const n=s(),o=n.hash||"";return l(e,t,r.userQuery||n.userQuery,r.portalQuery||n.portalQuery)+o},e.getPortalEnv=function(){return location.hostname.split(".")[0].toLowerCase()}}(MsPortalImpl||(MsPortalImpl={})),function(e){var t="object"==typeof global?global:"object"==typeof self?self:"object"==typeof this?this:{};function r(e,r){return e!==t&&("function"==typeof Object.create?Object.defineProperty(e,"__esModule",{value:!0}):e.__esModule=!0),function(t,n){return e[t]=r?r(t,n):n}}"function"==typeof define&&define.amd?(
|
2 |
+
define("tslib",["exports"],(function(n){e(r(t,r(n)))})),require(["tslib"])):"object"==typeof module&&"object"==typeof module.exports?e(r(t,r(module.exports))):e(r(t))}((function(e){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};__extends=function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){Object.defineProperty(this,"constructor",{configurable:!0,value:e,writable:!0})}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)},__assign=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},__rest=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)t.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]])}return r},__decorate=function(e,t,r,n){var o,a=arguments.length,s=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var i=e.length-1;i>=0;i--)(o=e[i])&&(s=(a<3?o(s):a>3?o(t,r,s):o(t,r))||s);return a>3&&s&&Object.defineProperty(t,r,s),s},__param=function(e,t){return function(r,n){t(r,n,e)}},__esDecorate=function(e,t,r,n,o,a){function s(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var i,c=n.kind,l="getter"===c?"get":"setter"===c?"set":"value",u=!t&&e?n.static?e:e.prototype:null,f=t||(u?Object.getOwnPropertyDescriptor(u,n.name):{}),p=!1,_=r.length-1;_>=0;_--){var d={};for(var y in n)d[y]="access"===y?{}:n[y];for(var y in n.access)d.access[y]=n.access[y];d.addInitializer=function(e){if(p)throw new TypeError("Cannot add initializers after decoration has completed");a.push(s(e||null))};var m=(0,r[_])("accessor"===c?{get:f.get,set:f.set}:f[l],d);if("accessor"===c){if(void 0===m)continue;if(null===m||"object"!=typeof m)throw new TypeError("Object expected");(i=s(m.get))&&(f.get=i),(i=s(m.set))&&(f.set=i),(i=s(m.init))&&o.unshift(i)}else(i=s(m))&&("field"===c?o.unshift(i):f[l]=i)}u&&Object.defineProperty(u,n.name,f),p=!0},__runInitializers=function(e,t,r){for(var n=arguments.length>2,o=0;o<t.length;o++)r=n?t[o].call(e,r):t[o].call(e);return n?r:void 0},__propKey=function(e){return"symbol"==typeof e?e:"".concat(e)},__setFunctionName=function(e,t,r){return"symbol"==typeof t&&(t=t.description?"[".concat(t.description,"]"):""),Object.defineProperty(e,"name",{configurable:!0,value:r?"".concat(r," ",t):t})},__metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},__awaiter=function(e,t,r,n){return new(r||(r=Promise))((function(o,a){function s(e){try{c(n.next(e))}catch(e){a(e)}}function i(e){try{c(n.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,i)}c((n=n.apply(e,t||[])).next())}))},__generator=function(e,t){var r,n,o,a,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function i(i){return function(c){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a&&(a=0,i[0]&&(s=0)),s;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,n=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!(o=s.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){s.label=i[1];break}if(6===i[0]&&s.label<o[1]){s.label=o[1],o=i;break}if(o&&s.label<o[2]){s.label=o[2],s.ops.push(i);break}o[2]&&s.ops.pop(),s.trys.pop();continue}i=t.call(e,s)}catch(e){i=[6,e],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,c])}}},__exportStar=function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||__createBinding(t,e,r)},__createBinding=Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]},__values=function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},__read=function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,a=r.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(n=a.next()).done;)s.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(o)throw o.error}}return s},__spread=function(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(__read(arguments[t]));return e},__spreadArrays=function(){for(var e=0,t=0,r=arguments.length;t<r;t++)e+=arguments[t].length;var n=Array(e),o=0;for(t=0;t<r;t++)for(var a=arguments[t],s=0,i=a.length;s<i;s++,o++)n[o]=a[s];return n},__spreadArray=function(e,t,r){if(r||2===arguments.length)for(var n,o=0,a=t.length;o<a;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))},__await=function(e){return this instanceof __await?(this.v=e,this):new __await(e)},__asyncGenerator=function(e,t,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n,o=r.apply(e,t||[]),a=[];return n={},s("next"),s("throw"),s("return",(function(e){return function(t){return Promise.resolve(t).then(e,l)}})),n[Symbol.asyncIterator]=function(){return this},n;function s(e,t){o[e]&&(n[e]=function(t){return new Promise((function(r,n){a.push([e,t,r,n])>1||i(e,t)}))},t&&(n[e]=t(n[e])))}function i(e,t){try{(r=o[e](t)).value instanceof __await?Promise.resolve(r.value.v).then(c,l):u(a[0][2],r)}catch(e){u(a[0][3],e)}var r}function c(e){i("next",e)}function l(e){i("throw",e)}function u(e,t){e(t),a.shift(),a.length&&i(a[0][0],a[0][1])}},__asyncDelegator=function(e){var t,r;return t={},n("next"),n("throw",(function(e){throw e})),n("return"),t[Symbol.iterator]=function(){return this},t;function n(n,o){t[n]=e[n]?function(t){return(r=!r)?{value:__await(e[n](t)),done:!1}:o?o(t):t}:o}},__asyncValues=function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e="function"==typeof __values?__values(e):e[Symbol.iterator](),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(r){t[r]=e[r]&&function(t){return new Promise((function(n,o){(function(e,t,r,n){Promise.resolve(n).then((function(t){e({value:t,done:r})}),t)})(n,o,(t=e[r](t)).done,t.value)}))}}},__makeTemplateObject=function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e};var r=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t};__importStar=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return r(t,e),t},__importDefault=function(e){return e&&e.__esModule?e:{default:e}},__classPrivateFieldGet=function(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)},__classPrivateFieldSet=function(e,t,r,n,o){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!o)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!o:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?o.call(e,r):o?o.value=r:t.set(e,r),r},__classPrivateFieldIn=function(e,t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?t===e:e.has(t)},__addDisposableResource=function(e,t,r){if(null!=t){if("object"!=typeof t&&"function"!=typeof t)throw new TypeError("Object expected.");var n;if(r){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");n=t[Symbol.asyncDispose]}if(void 0===n){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");n=t[Symbol.dispose]}if("function"!=typeof n)throw new TypeError("Object not disposable.");e.stack.push({value:t,dispose:n,async:r})}else r&&e.stack.push({async:!0});return t};var n="function"==typeof SuppressedError?SuppressedError:function(e,t,r){var n=new Error(r);return n.name="SuppressedError",n.error=e,n.suppressed=t,n};__disposeResources=function(e){function t(t){e.error=e.hasError?new n(t,e.error,"An error was suppressed during disposal."):t,e.hasError=!0}return function r(){for(;e.stack.length;){var n=e.stack.pop();try{var o=n.dispose&&n.dispose.call(n.value);if(n.async)return Promise.resolve(o).then(r,(function(e){return t(e),r()}))}catch(e){t(e)}}if(e.hasError)throw e.error}()},e("__extends",__extends),e("__assign",__assign),e("__rest",__rest),e("__decorate",__decorate),e("__param",__param),e("__esDecorate",__esDecorate),e("__runInitializers",__runInitializers),e("__propKey",__propKey),e("__setFunctionName",__setFunctionName),e("__metadata",__metadata),e("__awaiter",__awaiter),e("__generator",__generator),e("__exportStar",__exportStar),e("__createBinding",__createBinding),e("__values",__values),e("__read",__read),e("__spread",__spread),e("__spreadArrays",__spreadArrays),e("__spreadArray",__spreadArray),e("__await",__await),e("__asyncGenerator",__asyncGenerator),e("__asyncDelegator",__asyncDelegator),e("__asyncValues",__asyncValues),e("__makeTemplateObject",__makeTemplateObject),e("__importStar",__importStar),e("__importDefault",__importDefault),e("__classPrivateFieldGet",__classPrivateFieldGet),e("__classPrivateFieldSet",__classPrivateFieldSet),e("__classPrivateFieldIn",__classPrivateFieldIn),e("__addDisposableResource",__addDisposableResource),e("__disposeResources",__disposeResources)})),function(e){let t=window,r=t.document,n=t.location,o=r.body;function a(e){return(e||"")+""}e.stringify=a;let s=a(navigator&&navigator.userAgent);function i(e,t){return e.includes(t)}const c=JSON.stringify,l=encodeURIComponent;e.cobrand=function(){};const u="Redirect_SomeRandomKey";function f(e){const t=i(s,"Windows");if((i(s,"Macintosh; Intel")||t)&&i(s,"Safari")&&!i(s,"Chrome")&&function(e){if(i(s,e)){const t=new RegExp(`\\s${e}/(\\d+)[\\.\\s$]`).exec(s),r=a(t&&t[1]);return parseInt(r,10)}}("Version")<=11)return e+"?reason=isSafari";const n=!!r.documentMode,o=/Trident\//i.test(s),c=i(s,"MSIE"),l=!Array.prototype.find;return n||o||c||l?e+"?reason=isIE":Promise&&Promise.prototype.finally&&Promise.allSettled&&Promise.any?"":e+"?reason=promise"}function p(e){return _("clearedStorage=true",`${e}/Html5StorageExceeded`,!0)}function _(t,r,o){return n.search.includes(t)?r:(o&&(e.localStorage.clear(),e.sessionStorage.clear()),(n.search&&n.search+"&"||"?")+t+n.hash)}function d(e,t){if(void 0!==e)return e;if(t&&t.startsWith("flight:")){const e=parseFloat(t.split(":")[1]);return Math.random()<e?"true":"false"}return t}e.redirect=async function(s){const i=s.portalServerConfig,y=s.portalServerFeatures,m=i.errorUri;if("true"===e.localStorage.getItem("MsalJsV3")?e.sessionStorage.setItem("MsalJsV3","true"):e.sessionStorage.removeItem("MsalJsV3"),"aad.portal.azure.com"===n.hostname.toLowerCase()&&["","#","#home"].includes(n.hash.toLowerCase()))return void(n.href=`https://entra.microsoft.com${n.pathname||""}${n.search||""}#view/Microsoft_AAD_IAM/TenantOverview.ReactView`);let h;try{const l=function(t){let r;try{[e.localStorage,e.sessionStorage].forEach((e=>{if(r=e.length,e.setItem(u,u),u!==e.getItem(u))throw u;e.removeItem(u)}))}catch(e){return 22===e.code&&r?p(t):_("storagepolyfill=true",`${t}/UE_NoHtml5Storage`)}}(m),g=i.portalQuery,v=i.applicationPath,w=i.supportedLanguages,b=e.parseQuery(t.location.search),S=[...b],I=i.unsupportedUri,P=(t,r)=>d(e.extractValueFromQueryString(S,"feature."+t),r),O=t=>e.getFirstQueryValue(S,t,!0);if(h=f(I)||function(e){return t.Intl?"":e+"?reason=intl"}(I)||l,!h){const l=e.sessionStorage,u=e.localStorage;u.removeItem("signOutAll");const f=O("Referrer");g.env=e.getPortalEnv(),"true"===O("feature.armbreakglass")&&l.setItem("Redirect_ArmBreakGlass","true");const p=O("sessionId"),_=FxImpl.createGuid(p,!0);l.setItem("Redirect_SessionId",_),e.trySaveAllowedState(i.environment,S,!0,g),e.savePageTelemetry("EntryPoint"),l.setItem("Redirect_Referrers",c([a(r.referrer),a(f)]));const I=`${n.protocol}//${n.host}${v}`,j=function(t,r){const n=[];return Object.keys(r).forEach((o=>{const a="feature."+o,s=d(e.extractValueFromQueryString(t,a),r[o]);s&&n.push(`${a}=${s}`)})),n.join("&")}(S,{settingsportalinstance:y.settingsPortalInstanceValue,inmemorysettings:y.inMemorySettingsValue,argsubscriptions:y.argSubscriptionsValue,showservicehealthalerts:y.showServiceHealthAlertsValue,prefetchtokens:y.prefetchTokensValue,internalgraphapiversion:y.internalGraphApiVersionValue,cae:y.caeValue,selftoken:y.selfTokenValue,globalresourcefilter:y.globalResourceFilterValue,msaljs:y.msalJsValue,fetchpolicyforrestypes:y.fetchPolicyForResTypesValue,testcrosscloudpuid:y.testCrossCloudPuidValue,useredirecthint:y.useRedirectHintValue,usetenanthint:y.useTenantHintValue,nativebroker:y.nativeBrokerValue,msaljswithfallback:y.msalJsWithFallbackValue});let E=e.getTenantFromPath(n.pathname,!0);const x=u.getItem("preferredPortalUri"),R=parseInt(function(e,t){const r=e.getItem(t);return e.removeItem(t),r}(l,"Redirect_PreferredPortalRedirectCount"))||0,T=P("useredirecthint",y.useRedirectHintValue),V=P("msaljs",y.msalJsValue);if(!E&&function(t){const r=e.sessionStorage.getItem("authState");if(r){try{const n=JSON.parse(r),o=n?.oAuthToken;let a=0;o?.authHeader&&(a=o.expiresAt);let s=o&&a>=Date.now();const i=n?.selfOAuthToken;if(i?.authHeader&&(s=s&&(i.expiresAt||0)>=Date.now()),s=t?s&&!!n.isInitializedUsingSpaAuthCode:s&&!!n.refreshToken,s)return e.localStorage.removeItem("authState"),!0}catch(e){}e.sessionStorage.removeItem("authState")}return!1}("true"===V))h=e.getPortalUri(I,w);else if("true"===T&&x&&x!==n.hostname&&!(S||[]).length&&!E&&R<3)l.setItem("Redirect_PreferredPortalRedirectCount",R+1+""),h=e.getPortalUri(x,w,{portalQuery:i.portalQuery});else{let r=parseInt(l.getItem("Redirect_IdpRedirectCount"))||0;E=/^#@([^/]*)|$/.exec(/#.*|$/.exec(t.location.href)[0])[1]||E;const c=P("usetenanthint",y.useTenantHintValue);let f="";const p=u.getItem("tenantHint");if("true"===c&&p&&(f=`&tenantHint=${p}`,u.removeItem("tenantHint"),l.setItem("usedTenantHint",p)),"true"===e.localStorage.getItem("MsalJsLoginEnabled"))try{let t=E.startsWith("@")?E.substring(1):E;t=t||"organizations";const r={armAadResource:i.armAadResource,authority:i.authority,forceSignInQueryStringValue:e.extractValueFromQueryString(b,"forcesignin")||"",portalClientId:i.portalClientId,portalRequestedTenantInfo:{id:t,domainName:"",displayName:""}};await e.loginUsingMsalJs({isNativeBrokerEnabled:e.useMsalJsV3InCurrentSession()&&"true"===P("nativebroker",y.nativeBrokerValue),portalOptions:r,portalServerMsalJsConfig:s.portalServerMsalJsConfig,source:"Startup",userQueryStringInUrl:b,loginStage:{type:"Startup"}})}catch(t){e.saveLog({source:"Startup",action:"FallbackToLegacySignIn",data:{errorMessage:t.message+(t.stack||"")||t.toString()}}),e.sessionStorage.removeItem("PortalRequestedTenant")}const d=t.document.createElement("script"),h=e.localStorage.getItem("SavedDefaultDirectory"),g=h?`&savedDefaultDirectory=${h}`:"",v=["signInParameters","loginHint","selectAccount","forcesignin","whr","slice","mfalogin"].reduce(((t,r)=>{const n=e.extractValueFromQueryString(b,r);return n&&(t+=`&${r}=${n}`),t}),"");d.src=`${i.signinUri}${E}?sessionId=${_}&${j}&idpc=${r}${f}${g}${v}`,o.appendChild(d),setTimeout((()=>{l.setItem("Redirect_IdpRedirectCount",a(++r)),r%3?n.reload():n.href=m+"/UE_IDP"}),6e4);const S=e.getPortalUri(I,w),O=new XMLHttpRequest;O.open("GET",S),O.send(null)}}}catch(e){if(22===(e=e||{}).code)h=p(m);else{let t=l(a(e));const r=e.message;r&&(t=l(r)+"&stack="+l(e.stack)),h=m+"/Unhandled?err="+t}}h&&(n.href=h)}}(MsPortalImpl||(MsPortalImpl={}));
|
3 |
+
MsPortalImpl.redirect({"portalServerFeatures":{"settingsPortalInstanceValue":"","argSubscriptionsValue":"true","showServiceHealthAlertsValue":"true","inMemorySettingsValue":"","prefetchTokensValue":"","internalGraphApiVersionValue":"true","caeValue":"","selfTokenValue":"true","globalResourceFilterValue":"true","msalJsValue":"true","fetchPolicyForResTypesValue":"true","testCrossCloudPuidValue":"true","useRedirectHintValue":"true","useTenantHintValue":"true","nativeBrokerValue":"","msalJsWithFallbackValue":""},"portalServerConfig":{"portalQuery":{"configHash":"PkNJfkTTGDC1","pageVersion":"14.232.2.114.232.0.192030.241204-1800"},"environment":{"extensionsManifestHash":{"assetTypes":[["fzk-_69RhleV","7qKquWseJrkc"],["S9Wpr66CYe3e","qm2J0tGhtDkL"],["63VZs6bRmsRs","D9LjZFkHZr11"],["uO9aEWpC1fdv","lgMhtx-9cI-2"],["f8L4mqUdJz1L","m11RsozBSzDH"],["hsFXU-hOeL82","ej-vAIYmGCQq"],["nlEwPPz58LyX","AfNNA5UCTEL2"],["lfo0gzQzJz9-","-7LFSki2_sMF"],["5kYOqbRPWmEK","ORuUD_P3endQ"],["Y2vvbX_Rvumq","01piWrI6Au-y"],["gjtZ8sGyp4OO","8rNMaUIsWfLi"],["itGrl7kOnTAL","kQ5_wfwI6ke-"],["OX-PxLWSUAyu","29-UaJ153mcJ"],["e75KiN-kcag5","hfjHt4rpuDws"],["qKl_YGNNLpgm","i4ilPWfgF9L1"],["NNWIfGIdGBOz","Mqu9QNBfxi9d"],["Um_Q7Xxn4LoL","TfhWontS-zfY"],["FunRw0SBrz-y","TKBDdc8DYfTV"],["uPIdchkR9NCf","gwjpVZk-R3EF"],["YWyscj-Bbc8A","Pv9IonpkkVjz"]],"assetTypesBrowse":[["qvrLhGn7e2R4","k0ugWJ0ShOZp"],["j0g2-Hacu8Mz","MJaTq082kcbi"],["FO9H3As-NK_Z","2a5Ov5UJCbRE"],["ox80INLlPEV9","9aW6em_jJQC3"],["Z-4kkvFTLL9o","33Kt3-bBuD1P"],["PC9QtBTRmw0J","Hy7eV-yQID_S"],["Bo0uZf70dO8q","uCR_2kPMA6J2"],["OczBJeE44L_R","ODQRV4S11fDB"],["YOIMeIY_3b5i","DSki_KGZl8d7"],["HU5-BZJZdnuP","lYIrURBG4Lqy"],["ZMUm0ooJQ6NF","gm0XkejG_8xT"],["rG2tvJMMDdlb","x_GW82WkeEg4"],["LB5F9b6T08eL","2KI6RKed0JGj"],["Ojt-hlOttygN","cR5nGwbv6a2m"],["bQoiNaki2TJb","T19sHqQ3SwGA"],["WR0mWyAxlg7T","4a7Vp_bkZpdR"],["H4Tu3lmgvTHO","lqErdT5QACv0"],["qT8myUb9HMFR","p-5MSr6xJmus"],["Ri1cSHbeTuAu","ZkJWwMzomniS"],["i1I2_A9v44uu","nke5AHnj8ZSu"]],"assetTypesMenu":[["CWtcNNXk2KL1","uFKWwT7YvAkv"],["e7KXHJk-avNU","iU2aG3LGKPDV"],["t0qwGn3Sh5Jq","OrjT0fAMr23X"],["WAHUieSFstvP","1IOdW_QxhRSB"],["vxz-XIQvV9GM","rXnurc9n0VMf"],["PQoWYolC8peP","D_ExihZtW3Sx"],["1rFkcfM6KHPc","0-FGkZ7b5dcT"],["H8VkacN6M97m","G9mAdiYLEziy"],["ti8zS-UYlEqf","rrOIsVgP6js9"],["Qnl6ft6xN1VF","cFsqD6AFJzsf"],["XKpS9RXObIV_","SZSGpOpzcYOQ"],["1yQR7DArf2v5","6R8aUhfjAYXv"],["Gtn9DnrZPZWd","v1Ipp-i6Wu7f"],["8q6jH6B7XHr-","l3lgjBhPVk8Z"],["Yz2yEmoWSbJ6","M5GV16zUGPDx"],["ZmAWjZ7WM0IJ","WEKIhRAeYJA-"],["XAKw_v9-VxCS","bzIjcnJbz0Yq"],["Yk6a0FeJxIwR","KO8BOW3uk4bq"],["TDjWvC3HDh-V","7imnhVpSQgMU"],["nO5C_dvOviFr","h3dhZ9Ns_Gcg"]],"copilot":[["ouDuYMslcsxa","7SQeikVg_3hD"],["MXD8yELY-yHZ","z3OaWXP9098p"],["kc6Utns353tU","buswQ98vC4_T"],["5zrpupczXHyD","UhlebxtBtW3q"],["_GLNtXOEwRvM","iyE71UkBh07E"],["GWPtYjaB8SDQ","QL_UqEKa-yCU"],["rcnc3X_EIXxM","VjjPP0d59fow"],["5I_PqbCj6-Ii","rRe9XZYyRj4E"],["StZJDNvZWXPP","1JTBG__YtPPN"],["8Q4CmN6uCCNV","Dhiry0gCqz5i"],["FpsdPCUzdtZW","MGup3TJpskAh"],["R_tSUh_XRDkd","3P89f0O1ZXip"],["cjtUdZD8I_5B","GVWlIwMJhb4j"],["DVfQrjDrb7TP","QivCmgrzoSrS"],["WMbY14iQAr0k","E-aphlQTskeT"],["NsKdCJI93FMC","zDn05N4rB4tH"],["6QfwwbgJzBSD","gX4njVT_3KJ7"],["CWgoWYtGDDlz","5iHzHXhAZYvS"],["_BwfFzFCEDNV","Bus5RHfbmTvM"],["ouDuYMslcsxa","7SQeikVg_3hD"]],"extensionConfiguration":[["cnr4lI4ldr5Q","lQ8OpLVfTNJY"],["Kp62fcUM8DI3","CKVXKnkKG407"],["gIAGw_-LpU5B","2b_xV57k3YJ_"],["tMa_FyZOpN5m","T0PzmIpvzKYj"],["w9DveOaTHwH6","59cdcEU4f6DO"],["24srI6dhJoX2","cF-W7NoE72Pt"],["8VtWR5DMNM3C","gG1ThAqzqZmN"],["gkWpy3AXtSKV","YbAZjRcMbbdK"],["fAWj2q_FPxff","CXaK7Jha5JAq"],["UDODSIVHxNli","A2YkVzeZcg8S"],["WfBdDij2h6zR","oDuqmQ_q3Y4A"],["aEtFTZXWV8u-","RdcrT5VaD_xh"],["8XeWOKheoIFe","QYHNtCvQEYiO"],["6nrmyo4wU6oh","RUfXxU4KxT-i"],["VxAaqQKI2oU0","u5mjgeema9yn"],["cGXh86NHmtMa","Wpp0eMDjBoZ5"],["UqaZ8-BycncW","W4dIVKsUe0iI"],["79203hFrDTtd","LonWBUJp0do3"],["cev2eIJQfXX7","pxY-6deZDsUY"],["cnr4lI4ldr5Q","lQ8OpLVfTNJY"]],"featureCards":[["I1hn0UAALVce","YuOmwVntpQ-g"],["pxnsxruXwd0c","NxsMn96zL-BN"],["G0Iyhvc2wqJx","EpZcQuk5oNvl"],["iXEZQ87gF2_Q","fUIidLiWUICi"],["_7h5vlNnHTLc","77o1fQKTVo9s"],["sw2f5Xtu9701","RK9TlQE3Y-4E"],["AReK7hVk4d07","OJIW3uT1v1T_"],["flWb8MWO9C6n","LnvE9P7NW9HY"],["7OierOMRZ4Jt","yrTAxAQ31lAB"],["tdkOzom5NCon","CSQ-a7AFrmAs"],["6Sh5mXBwo07O","OIxiu7uqEJZp"],["bRAxCirrxaAD","LCqBejFcNjxj"],["tMAjZfOAYJey","Vi9i88PdJwzh"],["X_Tyk1CfHZb_","7AEv-KOwVfPs"],["i9RyD3jANwyi","VUd-wR6weM2i"],["C_a5lL75JIj7","EmK5uW2Xdv09"],["QdK3BoF609ph","lMhO64cbUgjc"],["LW3tOEfly-ba","s4abFqoYGXA_"],["DXgk_WmPgr-v","J1JB92WmrLiH"],["UYS0IppCfI4o","KvIuHXUyUcW-"]],"galleryParts":[["QjhJ-2h6a97W","4JzwEgxQA6Cr"],["S2FifjTFJUOM","QB03wZjs_oM_"],["tpnPbYYHZXU-","xv_t88PJ4TLu"],["UHw1MvPVlm6m","1zQ_cS7omLr8"],["qfUj1eSCrVZB","AOGOEt_PPLM0"],["nNNfTWoy__oL","p08_5o9d7UKp"],["pyK5nXWwq5Oo","M8XylWafSRfr"],["1ObU1E0sc1d7","1g5EHfMgMNwD"],["j6qjqDbi_XQF","vB27yr5gbL80"],["8CLjvzBPmxwU","W3Go0Yc12edf"],["p0mZl0LqBWCm","jYNncrX8DXlB"],["h6ZvFwh7trSd","5D-1sCgsim9C"],["GWWi0UjJp_zO","afaZ7lL_eR_y"],["pmwayLaCDf-k","Hb10bufiO3LK"],["Dq550vx3Td_Z","PucHcdYzgAR3"],["Aw_KndW3Wvpt","xxeAhsbe6Sfa"],["wUj_JF3Uv-rw","pUHDMdWzedbS"],["77TOvkkolUfZ","kEDE1L0w5FKq"],["UGAI8O444nFf","HoZP0mxbWZ3B"],["jP-_ZYFldW2c","jl-qea7pjvrT"]],"surveys":[["u5TJ9-nL00uV"],["75h0Uvou7ijr"],["oBjMRZQ2QyOF"],["4vgJhlz42Th3"],["PvPl442OXlH2"],["l_o5Is9uKxhK"],["VY9H2_7QwDnG"],["JInEBj6TZeWq"],["7ieeg9J2ZdeB"],["5AWM-mKbZhgd"],["y_x5rbxnTGZE"],["QofqBGmeVcJS"],["JWnY4kFk1Cq4"],["NdqGd8Oc74D_"],["LSjT4UeLIA8n"],["qFDn2JD0JbKl"],["XZrGAa9SqFYt"],["3JQPr8M_K0uf"],["9E2T9z2pfNhx"],["WZYZiwCO6OLd"]],"tourGuide":[["Evz5gZtP5b0a","8uz4k71t3lEh"],["JHUdIZSd0bNI","d8Nj9BPxFFOt"],["-V8SI3C3bu8S","st6jkbhzAqk5"],["vGsd7HRAZ8SJ","0zXfXg60tZ4I"],["z2MHaEZ2uD31","Aa6hn4jtXWel"],["kW4Art5k5B-R","t0spezf2b0OG"],["psSLqb23CI3o","j5g_KpfDsa2e"],["SUkoLKBKGuX7","aogKP7OKLeGA"],["y6elXb9Y5S7r","hRU83jSFG6Pm"],["lamMxWXect8C","-nNTkTPkpiWf"],["CJqhqKgLVgJw","djBC9BlEeII2"],["6fdaJilOmr7g","dMjUBXmxVOu-"],["kn85p-VBLCY5","8JMXlQqa-UEo"],["bxW6gatLgX39","pe4YdkQG9cVE"],["GXOjyyJdIEld","LfYVAiAyruC_"],["_0wEC-nUc-TL","xRh0gD10u6Q2"],["hZGRRTk9bwEv","ZBhjGiC9aQML"],["G2C82Xy0hFQv","yBlU4dtQD7bM"],["F7D_jAkcnb9a","zqQ1wOCDNnWp"],["Evz5gZtP5b0a","8uz4k71t3lEh"]],"uiDefinition":[["HpPRhYJLYEF8","B7PD1MrzXEvN"],["clbfpnA6ASj0","5Vz_YmPJyWZ1"],["-icDFziQqCCR","A6dGT4LpHSz1"],["k0aa2y7MsGFf","7kMXGl9AMhQK"],["7iZdAVFY7A0_","rAar-HnoXTXL"],["bOtx6VKhHDWH","KB4BcLB-ZuhB"],["QzuwPLi1P5pU","8KTNghiWYKUA"],["__kr3fZQdfOM","NeHoQTKikdDJ"],["d1RiZE6nrey8","tiuEs0M1Ymb3"],["JO7C7S6yf7l4","xh7RFZHoc-ab"],["uFO7QKLx4noz","as2e_pG4sV2X"],["xIWsszZMug86","5m9VVvSb9_qg"],["-KnGDSr5S9Zl","QfJ5aJkmqr1e"],["9WFY72TbFeDT","kC58WijPCp-5"],["LI85nb9Ya5JT","JIwREiieai01"],["i1YaeUvs6cGf","M_rg9Lv8bXuX"],["9UNVkDlH87Fa","2u_EWfYU1K1L"],["i1m9rO_iBEoY","oLuB4BDWbMHy"],["ChOsyjp3cI9g","Jc32eWGymJXd"],["HpPRhYJLYEF8","B7PD1MrzXEvN"]]},"extensionsPageVersion":{"AppInsightsExtension":["1.0.20241219.2257","1.0.20250106.2349"],"AppPlatformExtension":["1.0.02867.308"],"AzureCacheExtension":["1.3.02875.422"],"AzureTfsExtension":["19.247.35422.10"],"Azure_Marketplace_Astronomer":["0.9.028731-484067"],"Azure_Marketplace_Confluent":["0.9.0287814-460370"],"Azure_Marketplace_Datadog":["2.2101.028732-8148805"],"Azure_Marketplace_Dell":["0.9.028251-109367"],"Azure_Marketplace_Dynatrace":["0.9.029281-38099"],"Azure_Marketplace_Elastic":["0.1.028752-867720"],"Azure_Marketplace_Informatica":["0.9.028801-5467"],"Azure_Marketplace_Liftr_Logz":["0.9.028681-288"],"Azure_Marketplace_Liftr_NewRelic":["0.9.028791-182848"],"Azure_MarketPlace_NativeISVService":["0.9.0287826-94422","0.9.0289527-2972966"],"Azure_Marketplace_Neon":["0.9.028611-398878"],"Azure_Marketplace_NGINX":["2.2101.028681-150416"],"Azure_Marketplace_PaloAltoNetworks_Cloudngfw":["1.0.0.241217-0719"],"Azure_Marketplace_PureStorage":["0.9.029231-085211","0.9.029291-4748"],"Azure_Marketplace_Qumulo":["0.1.028732-427870"],"Azure_Marketplace_SamplePartner":["0.9.026611-97"],"Azure_Marketplace_SolarWindsObservability":["0.9.028741-97813"],"Azure_Marketplace_SplitIO":["1.0.028671-84714"],"DxExtension":["14.216.1.114.216.0.19852.241025-1953"],"HubsExtension":["14.232.2.114.232.0.192030.241204-1800/Zibck4M3AFmV"],"Microsoft_AAD_AuthenticationMethods":["1.0.02811103"],"Microsoft_AAD_B2CAdmin":["1.1.721.0"],"Microsoft_AAD_ConditionalAccess":["1.0.02899807"],"Microsoft_AAD_Connect_Provisioning":["3.0.02892991"],"Microsoft_AAD_DecentralizedIdentity":["1.0.02885406"],"Microsoft_AAD_Devices":["1.0.02868505"],"Microsoft_AAD_DomainServices":["2.0.170.0"],"Microsoft_AAD_DXP":["1.0.02895.1329-"],"Microsoft_AAD_ERM":["1.2.870.355"],"Microsoft_AAD_HybridAuthentication":["1.0.02655.90"],"Microsoft_AAD_IAM":["3.0.029001752"],"Microsoft_AAD_IdentityProtection":["1.0.02872276"],"Microsoft_AAD_LifecycleManagement":["1.0.02901.244"],"Microsoft_AAD_RegisteredApps":["1.0.2896.1143"],"Microsoft_AAD_UsersAndTenants":["1.0.02892.1202-352"],"Microsoft_AzureCXP_BusinessReview":["0.1.4138"],"Microsoft_AzureCXP_Cpoe":["0.1.3992"],"Microsoft_AzureCXP_EngageHub":["0.1.4208"],"Microsoft_AzureCXP_EngageHubInsights":["0.1.4024"],"Microsoft_AzureCXP_EngageHub_Spaces":["0.1.3950"],"Microsoft_AzureCXP_EngageHub_Support":["0.1.4261-0001"],"Microsoft_AzureStackHCI_PortalExtension":["1.0.028923178"],"Microsoft_AzureStack_LabHardware":["1.0.850.0"],"Microsoft_Azure_ActivityLog":["3.0.02782.235"],"Microsoft_Azure_AD":["1.0.4309.0","1.0.4341.0"],"Microsoft_Azure_ADHybridHealth":["2.0.02872241"],"Microsoft_Azure_ADU":["3.0.0.4"],"Microsoft_Azure_AdvisorPortalExtension":["1.0.02850.280"],"Microsoft_Azure_AFDX":["1.8.028961464"],"Microsoft_Azure_AgFoodPlatform":["1.0.0.89"],"Microsoft_Azure_AnalysisServices":["1.2.2.63"],"Microsoft_Azure_Analytics":["1.0.02879.1"],"Microsoft_Azure_ANMVerifier":["1.0.02852.93-234","1.0.02872.101-22"],"Microsoft_Azure_AO5GC":["1.0.0.0-2404250546"],"Microsoft_Azure_AP5GC":["2-2410080600","2-2411130747"],"Microsoft_Azure_ApiManagement":["1.1008.0.1"],"Microsoft_Azure_APISecurity":["1.24.12.202016"],"Microsoft_Azure_AppComplianceAutomation":["202411190218"],"Microsoft_Azure_Appliance":["4.0.300.192","4.0.200.137"],"Microsoft_Azure_AppProtection":["1.0.02842.54","1.0.02920.114"],"Microsoft_Azure_ArcCenterUX":["1.0.60.0","1.0.63.0"],"Microsoft_Azure_ArcClusterUX":["1.0.1063.0","1.0.1060"],"Microsoft_Azure_ArcNetworking":["1.4.1.11"],"Microsoft_Azure_ASCInformationProtection":["1.24.12.221028"],"Microsoft_Azure_Attestation":["1.0.14.232.0"],"Microsoft_Azure_AutoManagedVirtualMachines":["1.0.02854.456"],"Microsoft_Azure_AutomaticAKS":["4.12.0.2879"],"Microsoft_Azure_Automation":["7.3.2932.0.241115-0022"],"Microsoft_Azure_AzConfig":["1.0.02872126-1"],"Microsoft_Azure_AzFleet":["5.13.393.1807-1729806492-","5.13.393.1893"],"Microsoft_Azure_Batch":["1.1.02927.368"],"Microsoft_Azure_BCDRCenter":["1.0.02858.1262"],"Microsoft_Azure_Billing":["24.11.02900.175-6330","1.0.02921.1159-120496"],"Microsoft_Azure_BotService":["1.4.1.400371"],"Microsoft_Azure_Capacity":["241122-0516"],"Microsoft_Azure_Cdn":["1.0.02902.416--68770"],"Microsoft_Azure_ChangeAnalysis":["1.0.02852.117"],"Microsoft_Azure_Chaos":["1.0.0-1.0.02859.2-20600","1.0.0-1.0.02923.1-96"],"Microsoft_Azure_ClassicResources":["1.0.10.153"],"Microsoft_Azure_Classic_Compute":["5.13.393.1659"],"Microsoft_Azure_CloudforSovereignty":["1.0.241025.2416"],"Microsoft_Azure_CloudHSM":["1.0.02853.220","1.0.02861.221"],"Microsoft_Azure_CloudNative":["5.13.393.1819","5.13.393.1873"],"Microsoft_Azure_CloudNativeTesting":["2024102820241028.1","2024102820241125.2"],"Microsoft_Azure_CloudPC":["1.0.241212.112391938"],"Microsoft_Azure_CloudServices":["5.13.393.1807-1729702289-"],"Microsoft_Azure_CloudServices_Arm":["5.13.393.1807-1729806510-"],"Microsoft_Azure_CloudTest":["2.0.20250107.1"],"Microsoft_Azure_CodeOptimizations":["1.0.02853.40"],"Microsoft_Azure_CodeSigning":["1.0.20241211.103"],"Microsoft_Azure_CommunicationServices":["1.0.20241216.2"],"Microsoft_Azure_CommunicationsGatewayExtension":["2.0.0.0"],"Microsoft_Azure_CommunityTraining":["1.0.8.1"],"Microsoft_Azure_ComplianceCenter":["1.0.0.20250107064429"],"Microsoft_Azure_Compute":["5.13.393.1807-1733508958-","5.13.393.1893"],"Microsoft_Azure_ComputeHub":["5.13.393.1807","5.13.393.1893"],"Microsoft_Azure_ConfidentialLedger":["23.3.7.2"],"Microsoft_Azure_ConfigManager":["20241204.2"],"Microsoft_Azure_ContainerInsightsExt":["2.0.20241023.2014","2.0.20250107.2318"],"Microsoft_Azure_ContainerRegistries":["1.0.20240829.9"],"Microsoft_Azure_ContainerService":["4.60.1.101/1EqRKWy2d0SP","5.13.393.1894/vI1KG2-BOeC1"],"Microsoft_Azure_ContainerStorage":["5.13.393.1697","5.13.393.1698"],"Microsoft_Azure_Copilot":["1.311.02882.591","1.200.02872.577"],"Microsoft_Azure_CostManagement":["241204-0558"],"Microsoft_Azure_CreateUIDef":["1.0.300.338","1.0.200.604"],"Microsoft_Azure_CtsExtension":["1.2.1.0"],"Microsoft_Azure_CustomerHub":["1.0.300.165","1.0.300.167"],"Microsoft_Azure_Dashboard":["2.0.1890.0"],"Microsoft_Azure_DatabaseInsights":["1.0.02854.428"],"Microsoft_Azure_Databricks":["1.0.02855.267"],"Microsoft_Azure_DataCollaboration":["2.0.20230315-0800"],"Microsoft_Azure_DataFactory":["1.0.20241024.1"],"Microsoft_Azure_DataLakeAnalytics":["20240906.1"],"Microsoft_Azure_DataLakeStore":["5.13.393.1735"],"Microsoft_Azure_DataProtection":["241029-102415"],"Microsoft_Azure_DataShare":["2.0.20241211-0201","2.0.20241211-0102"],"Microsoft_Azure_Dedicated_ClusterStor":["240909-1921"],"Microsoft_Azure_Dedicated_Cray":["240909-1921"],"Microsoft_Azure_Dedicated_Monitoring":["240909-1921"],"Microsoft_Azure_DetonationService":["2.00.00.03"],"Microsoft_Azure_DevCenter":["14.170.0.1.241114-1814"],"Microsoft_Azure_DeviceRegistry":["1.0.02871.97-111120"],"Microsoft_Azure_DeviceUpdate":["1.0.02843.128-101415"],"Microsoft_Azure_DevOpsInfrastructure":["1.0.20250107.1"],"Microsoft_Azure_DevTestLab":["14.170.0.1.241127-2113"],"Microsoft_Azure_DevTunnels":["1.0.231005.2128","1.0.230613.1659"],"Microsoft_Azure_DigitalTwins":["1.0.02829.187-093022"],"Microsoft_Azure_DiskMgmt":["5.13.393.1804-1730162051-","5.13.393.1893"],"Microsoft_Azure_DMS":["5.1.6396.3"],"Microsoft_Azure_DNS":["1.0.02867.222","1.0.02928.243"],"Microsoft_Azure_DNSManagedResolver":["1.0.02816.276","1.0.02927.282"],"Microsoft_Azure_DnsSecurityPolicy":["1.0.02878.100"],"Microsoft_Azure_DocumentDB":["2.0.20241115.7.0","2.0.20250101.1.0"],"Microsoft_Azure_DocumentManagement":["1.0.02852.2"],"Microsoft_Azure_Ea":["20241212.2"],"Microsoft_Azure_EASM":["1.0.02900.1469"],"Microsoft_Azure_ECE":["1.0.02748.15-652409","1.0.02844.22-206"],"Microsoft_Azure_EdgeAIExtension":["1.0.02908.28"],"Microsoft_Azure_EdgeGateway":["1.0.02825.1545"],"Microsoft_Azure_EdgeManagementCopilot":["1.0.02854.246"],"Microsoft_Azure_EdgeOrder":["1.0.02894393"],"Microsoft_Azure_Education":["2024.11.26-1726"],"Microsoft_Azure_ElasticSan":["5.13.393.1807-1731535885-","5.13.393.1893"],"Microsoft_Azure_ELMAdmin":["2.77.02911.2151"],"Microsoft_Azure_EMA":["2.41028.1.6","2.41028.1.12"],"Microsoft_Azure_EmailCommunicationServices":["66616971"],"Microsoft_Azure_EpicManagement":["1.2.10205.10621"],"Microsoft_Azure_EventGrid":["2.0.02871.233"],"Microsoft_Azure_EventHub":["2.0.02879.345"],"Microsoft_Azure_Experimentation":["2.0.02895.64"],"Microsoft_Azure_Expert":["1.20241028.1","1.20241101.1"],"Microsoft_Azure_ExpressPod":["1.0.0"],"Microsoft_Azure_FairfieldGardens":["1.0.02837.66-100800"],"Microsoft_Azure_FileShare":["5.13.393.1803","5.13.393.1864"],"Microsoft_Azure_FileStorage":["5.13.393.1803","5.13.393.1851"],"Microsoft_Azure_FIST":["2024.10.02.160055","2024.06.13.181824"],"Microsoft_Azure_FlowLog":["2.0.0.306.241021-2045"],"Microsoft_Azure_FluidRelay":["1.0.2.4.241014-1713"],"Microsoft_Azure_Frontdoor":["1.0.02793.355--71340517","1.0.02858.386--179125"],"Microsoft_Azure_GeneratedExtension":["1.200.02858.681"],"Microsoft_Azure_GlobalView":["1.0.0.5"],"Microsoft_Azure_GraphDataConnect":["1.20241010.6.0"],"Microsoft_Azure_GTM":["24.12.02904.389-3707","1.0.02913.2615-10063"],"Microsoft_Azure_HDInsight":["1.0.02859.1610"],"Microsoft_Azure_Health":["1.1.1.465","1.1.1.469"],"Microsoft_Azure_HealthBot":["1.0.0.112"],"Microsoft_Azure_HealthDataDeidentification":["1.0.49698.1"],"Microsoft_Azure_HealthModels":["0.2023.78.333"],"Microsoft_Azure_HybridCompute":["1.0.4277.0","1.0.4301.0"],"Microsoft_Azure_HybridData_Platform":["1.0.02901.212"],"Microsoft_Azure_HybridNetworking":["24.8.0.63-241023-2106"],"Microsoft_Azure_IacAutomation":["0.0.1.241017-0944","0.0.1.241018-0643"],"Microsoft_Azure_IdentityGovernance":["1.0.02871.241"],"Microsoft_Azure_IndustrySolutionCenter":["1.0.241111-0553"],"Microsoft_Azure_IoTCentral":["2.0.9070.41921"],"Microsoft_Azure_IotHub":["1.0.02860.545-103117"],"Microsoft_Azure_IoTOperations":["1.0.02881.174-112117"],"Microsoft_Azure_IoT_Defender":["2025-01-01--11-26-39"],"Microsoft_Azure_IPAddressManager":["1.0.02859.150-2636459"],"Microsoft_Azure_Kailani":["5.13.393.1803-1733785378-","5.13.393.1893"],"Microsoft_Azure_KeyVault":["1.2.298.0.241021-1530"],"Microsoft_Azure_Kusto":["1.0.2418.0"],"Microsoft_Azure_LocationServices":["3.0.02871.271"],"Microsoft_Azure_Lockbox":["2.62.0.0"],"Microsoft_Azure_Maintenance":["5.13.393.1807-1729702031-","5.13.393.1893"],"Microsoft_Azure_ManagedHSM":["1.0.02861.409-262501","1.0.02928.482-8060"],"Microsoft_Azure_ManagedLab":["14.226.0.1.241231-1943"],"Microsoft_Azure_ManagedNetwork":["1.0.02859.162-866","1.0.02928.190-2135"],"Microsoft_Azure_ManagedServiceIdentity":["2.1.8974.0"],"Microsoft_Azure_ManagedStorageClass":["1.4.0.202410290745","1.4.0.202411050815"],"Microsoft_Azure_Marketplace":["50.0.02899.41-23270","30.0.02928.35-02549"],"Microsoft_Azure_MarketplaceTransact":["1.0.20241212.4173"],"Microsoft_Azure_Media":["1.0.1421.0"],"Microsoft_Azure_Migrate":["1.0.10.509"],"Microsoft_Azure_MigrateAssessment":["1.0.10.4"],"Microsoft_Azure_MigrateModernization":["1.51.1240903.11134"],"Microsoft_Azure_MLTeamAccounts":["1.0.0.241219-2106"],"Microsoft_Azure_ModSimWorkbench":["0.10.10.2"],"Microsoft_Azure_Monitoring":["22.20241030.2.0.02859.431"],"Microsoft_Azure_MonitoringMetrics":["2.0.20241017.1618","2.0.20250107.1715"],"Microsoft_Azure_Monitoring_Alerts":["1.0.02824.1331","1.0.02891.1370"],"Microsoft_Azure_NetApp":["2407.3.0.1"],"Microsoft_Azure_Network":["5.13.393.1821","5.13.393.1863"],"Microsoft_Azure_NetworkCloud":["5.9.0","5.858.0-1"],"Microsoft_Azure_NetworkCopilot":["1.0.02927.120-5797234"],"Microsoft_Azure_NetworkCopilotExtension":["1.0.02927.52-9799"],"Microsoft_Azure_NetworkingCopilot":["1.0.02873.108-2"],"Microsoft_Azure_NetworkSecurityPerimeter":["1.35.0.185"],"Microsoft_Azure_Network_Access":["1.0.02923.1585"],"Microsoft_Azure_NotificationHubs":["20241218.3.241218-1139"],"Microsoft_Azure_OneInventory":["1.0.02887.222"],"Microsoft_Azure_OneMigrate":["1.0.10.44"],"Microsoft_Azure_OpenEnergyPlatform":["1.0.206"],"Microsoft_Azure_OperationsMgr":["1.2.361.0"],"Microsoft_Azure_OpsMQ":["1.0.02734.96-062721"],"Microsoft_Azure_Orbital":["2024.10.02923.509"],"Microsoft_Azure_OSSDatabases":["2.1.02859122"],"Microsoft_Azure_PaasServerless":["5.246.1.3","5.247.0.2"],"Microsoft_Azure_Peering":["1.2.0.255"],"Microsoft_Azure_PIMCommon":["0.0.0.961"],"Microsoft_Azure_PinToGrafana":["1.2.154.1"],"Microsoft_Azure_Playground":["14.115.4.1"],"Microsoft_Azure_PlaywrightService":["1.0.0.43"],"Microsoft_Azure_Policy":["1.0.9.704"],"Microsoft_Azure_PortalDashboard":["1.100.02850.547","1.100.02928.557"],"Microsoft_Azure_PowerBIDedicated":["1.1.2823.1"],"Microsoft_Azure_PowerPlatform":["0.0.0.72"],"Microsoft_Azure_PrivateDNS":["1.0.02875.231","1.0.02928.241"],"Microsoft_Azure_PrivateModSimWorkbench":["0.10.10.2"],"Microsoft_Azure_ProgrammableConnectivity":["1.1.74","2.111.0-1"],"Microsoft_Azure_ProjectBabylon":["1.0.20241226.422","1.0.20240729.400"],"Microsoft_Azure_ProjectOxford":["241205-0551"],"Microsoft_Azure_Quantum":["1.11.2.4"],"Microsoft_Azure_RecommendationsService":["9.32.02744.262"],"Microsoft_Azure_RecoveryServices":["3.40.2411.283"],"Microsoft_Azure_Relay":["2.0.02851.179"],"Microsoft_Azure_Reservations":["11.19.2024.2050"],"Microsoft_Azure_ResourceMove":["1.1.10909.10739"],"Microsoft_Azure_Resources":["1.0.100.1000","1.0.100.1015"],"Microsoft_Azure_RpExt":["2.0.0.0"],"Microsoft_Azure_SaasHub":["1.0.02894.57-032"],"Microsoft_Azure_SapHanaInstances":["1.0.50.147"],"Microsoft_Azure_SAPManagement":["2.1.11015.10506"],"Microsoft_Azure_SAPMigrate":["1.2.10908.12138"],"Microsoft_Azure_Search":["149376413.20241114.1"],"Microsoft_Azure_Security":["1.25.01.072002"],"Microsoft_Azure_Security_AzureDefenderForData":["1.25.01.061251"],"Microsoft_Azure_Security_CloudNativeCompute":["1.24.12.311812"],"Microsoft_Azure_Security_DevOps":["1.25.01.032223"],"Microsoft_Azure_Security_Insights":["1.0.02923.465-250102-085937","1.0.02928.466-250107-093237"],"Microsoft_Azure_Security_IoT":["2024-12-29--08-15-43"],"Microsoft_Azure_Security_R3":["1.25.01.071638"],"Microsoft_Azure_SentinelUS":["1.0.02924.5502-250103-1623","1.0.02929.5517-250108-1419"],"Microsoft_Azure_ServiceBus":["2.0.02878.214"],"Microsoft_Azure_ServiceFabric":["5.13.393.1807-1729806504-"],"Microsoft_Azure_ServiceHub":["1.300.02860.75"],"Microsoft_Azure_SignalR":["1.0.02880.70--9565"],"Microsoft_Azure_SiteManager":["1.0.02888620"],"Microsoft_Azure_SiteRecovery":["1.51.12410.198"],"Microsoft_Azure_SolutionCenter":["5.13.393.1780","5.13.393.1875"],"Microsoft_Azure_Sphere":["2.0.25002.2"],"Microsoft_Azure_SpringApps":["20241218.1"],"Microsoft_Azure_Stack_Migrate":["2.241101.1914.1"],"Microsoft_Azure_Storage":["5.13.393.1803-1730161979-","5.13.393.1893"],"Microsoft_Azure_StorageCache":["1.1.0.1109"],"Microsoft_Azure_StorageInsights":["4.13.393.1126"],"Microsoft_Azure_StorageMover":["5.13.393.1803","5.13.393.1893"],"Microsoft_Azure_StorageTasks":["5.13.393.1803-1729816167-","5.13.393.1893"],"Microsoft_Azure_StreamAnalytics":["20241119.2"],"Microsoft_Azure_SubscriptionManagement":["1.0.02899.236.20241209-1952"],"Microsoft_Azure_Support":["1.580.20241107.1","1.580.20241029.1"],"Microsoft_Azure_Surface":["2.56.0"],"Microsoft_Azure_Sustainability":["1.0.1.173"],"Microsoft_Azure_Synapse":["1.0.02875.5"],"Microsoft_Azure_TemplateSpecs":["1.0.1.91"],"Microsoft_Azure_Toolbox":["2.0.02847.298"],"Microsoft_Azure_UsageBilling":["1.0.02805.11"],"Microsoft_Azure_VirtualEnclaves":["2.1.235.0"],"Microsoft_Azure_VirtualVisitsBuilder":["1.0.0.20240509190151576"],"Microsoft_Azure_VnfManager":["1.9.0","1.79.0-1"],"Microsoft_Azure_WaveMigration":["1.0.10.6"],"Microsoft_Azure_WhatsNew":["1.0.02900138"],"Microsoft_Azure_Winfields":["1.0.028335"],"Microsoft_Azure_WorkbooksExtension":["1.24.02857.421","1.24.02860.423"],"Microsoft_Azure_WorkloadInsight":["1.0.02819.95"],"Microsoft_Azure_WorkloadInsights":["2.0.20241008.1902","2.0.20241030.1727"],"Microsoft_Azure_WorkloadMonitor":["1.2.10924.10947","3.1.10107.10723"],"Microsoft_Azure_WVD":["1.0.02893.601"],"Microsoft_Bing_Api":["241212-1134"],"Microsoft_CloudHealth_HealthModels":["1.0.02907.87"],"Microsoft_Cognition_MixedReality":["36.0.0.0"],"Microsoft_ConnectedCache":["1.0.3.11"],"Microsoft_ConnectedCache_Ent":["1.0.0.2.25"],"Microsoft_ConnectedCache_Enterprise":["1.0.0.1.15"],"Microsoft_ConnectedCache_ISP":["1.0.0.1.48"],"Microsoft_EMM_ModernWorkplace":["1.2412.201.02"],"Microsoft_Entra_PM":["2025.1.7.1"],"Microsoft_Entra_PMAnalytics":["2024.10.11.1-105554065"],"Microsoft_Entra_PMDashboard":["2024.11.20.1-108585238"],"Microsoft_Healthcare_APIs":["1.0.554184.1","1.0.554553.1"],"Microsoft_Intune":["1.2412.15.3002.241216-2320"],"Microsoft_Intune_Apps":["2.2412.39.3002.241214-1836"],"Microsoft_Intune_DeviceExplorer":["1.0.241205.054721"],"Microsoft_Intune_Devices":["6.2412.38.3005.241218-1933"],"Microsoft_Intune_DeviceSettings":["1.2412.75.3011.250103-2300"],"Microsoft_Intune_Edu":["6.2412.14.3003.241216-2006"],"Microsoft_Intune_Enrollment":["7.2412.45.3003.241216-2046"],"Microsoft_Intune_MTM":["6.2410.1.50"],"Microsoft_Intune_Workflows":["1.2412.82.3002.241217-0650"],"Microsoft_ManufacturingPlatform_DMM":["19.11.2024"],"Microsoft_Marketplace_SolutionFinder":["1.0.20250108.1"],"Microsoft_OneFleet_DataHub":["1.0.02859.268"],"Microsoft_OperationsManagementSuite_Workspace":["3.0.02881.2173","3.0.02920.2221"],"Microsoft_Research_Genomics":["1.0.0.13929"],"Microsoft_Security_Copilot":["93"],"Microsoft_ServicesHub_Extension":["5.5.9.0"],"Microsoft_VideoIndexer":["1.0.02860.1-241031"],"Oracle_Databases_At_Azure":["1.164.0"],"ScanX_Management":["3.0.0.3"],"ServiceLinkerExtension":["2.0.20250106.1"],"SqlAzureExtension":["2.1.02901237"],"Universal_Print":["3.20241115.2"],"VLCentral_Agreement":["1.0.02903.1"],"VLCentral_Amendments":["1.0.02881.26"],"VLCentral_Approval":["1.0.02929.1"],"VLCentral_CaseManagement":["1.0.02879.2"],"VLCentral_HelpAndSupport":["1.0.02896.1"],"VLCentral_Home":["1.0.02894.1"],"VLCentral_OrderCredits":["1.0.02903.2","1.0.02894.2"],"VLCentral_Ordering":["15.0.02928.1"],"VLCentral_OrganizationManagementService":["1.0.02857.2"],"VLCentral_Platform":["1.0.02899.1"],"VLCentral_Quote":["1.0.02903.1"],"VLCentral_ReportingNAnalytics":["1.0.02896.1"],"VLCentral_UUM":["1.0.02865.54"],"VMCP":["1.2.02857.915","1.2.02866.925"],"WandiscoExtension":["1.14.16.0"],"WebsitesExtension":["5.246.3.3","5.247.0.2"]}},"signinUri":"/signin/idpRedirect.js/","errorUri":"/Error","unsupportedUri":"/Error/UE_Unsupported","applicationPath":"","supportedLanguages":["en","cs","de","es","fr","hu","id","it","ja","ko","nl","pl","pt-br","pt-pt","ru","sv","tr","zh-hans","zh-hant","qps-ploc"],"portalClientId":"c44b4083-3bb0-49c1-b47d-974e53cbdf3c","authority":"https://login.microsoftonline.com/","armAadResource":"https://management.core.windows.net/","tokenLifetimeClockSkewIntervalInMs":300000.0,"graphEndpoint":"https://graph.windows.net","orgIdChangePasswordUri":"https://go.microsoft.com/fwlink/?LinkID=522342","changePasswordUri":"https://go.microsoft.com/fwlink/?LinkID=522343","isAdfs":false,"roleIdForCompanyAdmin":"62e90394-69f5-4237-9190-012177145e10"},"portalServerMsalJsConfig":{"site_id":"501430","cobrandid":null,"msafed":null,"nativeBroker":0}});
|
4 |
+
</script></body></html>
|
download.htm
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html><html><head><meta charset='utf-8'/><title>Microsoft Azure</title></head><body><script>"use strict";var FxImpl,__extends,__assign,__rest,__decorate,__param,__esDecorate,__runInitializers,__propKey,__setFunctionName,__metadata,__awaiter,__generator,__exportStar,__values,__read,__spread,__spreadArrays,__spreadArray,__await,__asyncGenerator,__asyncDelegator,__asyncValues,__makeTemplateObject,__importStar,__importDefault,__classPrivateFieldGet,__classPrivateFieldSet,__classPrivateFieldIn,__createBinding,__addDisposableResource,__disposeResources,MsPortalImpl;!function(e){let t,r;try{t=window.localStorage,r=window.sessionStorage}catch(e){}e.localStorage=t,e.sessionStorage=r}(MsPortalImpl||(MsPortalImpl={})),function(e){e.getOrSetBootParameters=function(e,t){if(1===arguments.length)return e.sessionStorage.getItem("Redirect_BootParameters")||e.localStorage.getItem("Redirect_BootParameters");e.sessionStorage.setItem("Redirect_BootParameters",t),e.localStorage.setItem("Redirect_BootParameters",t)}}(MsPortalImpl||(MsPortalImpl={})),function(e){e.getTenantFromPath=function(e,t){const r=e.split("/").filter((e=>e));let n="";if(1===r.length?n=r[0]:e.startsWith("/auth/login")&&3===r.length&&(n=r[2]),n){const e=n.replace(/^@*/,""),r=/^[a-f0-9]{8}-(?:[a-f0-9]{4}-){3}[a-f0-9]{12}$/i;if(/^@?(?:(?:[a-z0-9]|[a-z0-9][a-z0-9-]{0,61}[a-z0-9])\.)+[a-z0-9]+|common$/i.test(e)||r.test(e))return t?"@"+e:e}return""}}(MsPortalImpl||(MsPortalImpl={})),function(e){var t=new Uint8Array(20),r=new Array(20);function n(e,r,n){var o=t[e]&r;t[e]=o|n}var o=window.crypto||window.msCrypto,a="0123456789abcdef".split(""),s=new Array(256),i=0;function c(){var e=function(e){for(var t,r=new Array(e);e;){t=4294967296*Math.random()|0;for(var n=8;n--;){if(r[--e]=a[15&t],e<0)return r;t>>>=4}}}(36);return e[8]=e[13]=e[18]=e[23]="-",e[14]="4",e[19]=a[8+(3&a.indexOf(e[19]))],e.join("")}a.forEach((function(e){a.forEach((function(t){s[i++]=e+t}))})),e.createGuid=function(e,a){void 0===a&&(a=!1);var i=o?function(){o.getRandomValues(t),n(8,15,64),n(11,63,128);for(var e=0;e<20;e++)r[e]=s[t[e]];return r[4]=r[7]=r[10]=r[13]="-",r.join("")}():c();return i=a?i.split("-").join("").substring(0,32):i.substring(0,36),(e?"".concat(e,"_"):"")+i}}(FxImpl||(FxImpl={})),function(e){e.supportedLanguagesNeutralLocales={de:"de-de",en:"en-us",es:"es-es",fr:"fr-fr",it:"it-it",id:"id-id",hu:"hu-hu",nl:"nl-nl",pl:"pl-pl","pt-br":"pt-br","pt-pt":"pt-pt",sv:"sv-se",tr:"tr-tr",cs:"cs-cz",ru:"ru-ru","zh-hans":"zh-cn","zh-hant":"zh-hk",ja:"ja-jp",ko:"ko-kr"};const t={"zh-hk":"zh-hant","zh-tw":"zh-hant","zh-cht":"zh-hant","zh-mo":"zh-hant",zh:"zh-hans",pt:"pt-br"};function r(e){const t=[];for(let r=(e=e||"").length;r>0;r=e.lastIndexOf("-",r-1))t.push(e.substring(0,r));return t}e.sanitizeLanguage=function(t,r){const n=(t||"").toLowerCase().split(".");if(r.includes(n[0])||(n[0]=r[0]),n.length<2){const t=e.supportedLanguagesNeutralLocales[n[0]];t&&(n[1]=t)}return n.join(".")},e.getBrowserLanguage=function(n){const o=(n||navigator.languages||[]).map((e=>e?.toLowerCase?.()));for(const n of o){const o=r(n);for(const r of o){const o=t[r]||r;if(o in e.supportedLanguagesNeutralLocales){const t=o;return`${t}.${n.split("-").length>1?n:e.supportedLanguagesNeutralLocales[t]}`}}}}}(MsPortalImpl||(MsPortalImpl={})),function(e){let t=window;function r(e){return e&&e.replace(/^\?/,"")}function n(e){return e&&r(e).split("&").map((e=>e.split("=")))||[]}function o(e,t){const r=e.map((e=>e[0]&&e.join("=")));return t&&r.sort(),r.join("&")}function a(e,t,r){if(t=t.toUpperCase(),e)for(let n=0;n<e.length;n++)if(e[n][0].toUpperCase()===t)return r?e.splice(n,1)[0][1]:e[n][1]}function s(){return JSON.parse(e.getOrSetBootParameters(e)||"{}")}function i(e){return a(n(s().userQuery),e)}function c(e){if(!e||e.startsWith("/"))return c(`${t.location.protocol}//${t.location.host}`);const r=/^(\w+:\/\/)([^:/?]+)([^/?]+)?/.exec(e),n=r[3]||("https://"===r[1]?":443":":80");return r[2]+n}function l(t,s,l,u){l=l||"",u=u||{};let f="";if(t&&c()===c(t))f=function(t,r,s){const c=n(t),l=e=>{Object.keys(e).forEach((t=>{t&&e[t]&&"string"!=typeof a(c,t)&&c.push([t,e[t]])}))};if(l(JSON.parse(e.localStorage.getItem("Redirect_LocaleQuery")||"{}")),l({l:e.localStorage.getItem("Redirect_LastUsedLocale")}),r.env){const t={},n=(n,o,a)=>{o=o||["true","false"];const s=n+(a||"");let c=i(n)||r[n];c||(c=e.localStorage.getItem(s)+"",o.includes(c)||(c=o[Math.floor(Math.random()*o.length)],e.localStorage.setItem(s,c))),t[n]=c},o=new Array(100);o.fill("DefaultPartitioner",0,100),n("bundlingKind",o,"12"),l(t)}l(r),["signIn","clearedStorage"].forEach((e=>{a(c,e,!0)}));const u=a(c,"l",!0)||e.getBrowserLanguage();return l({l:e.sanitizeLanguage(u,s)}),o(c,!0)}(l,u,s);else{const e=u.loginHint;e&&(l+=l?"&":"",l+=`loginHint=${e}`),f=r(l)}return f&&(t+=t.includes("?")?"&":"?",t+=f),t}e.parseQuery=n,e.extractValueFromQueryString=function(e,t){return a(e,t,!1)},e.getFirstQueryValue=a,e.getBootParameters=s,e.trySaveAllowedState=function(r,n,i,c){if(!e.getOrSetBootParameters(e)||i){["selectAccount","loginHint","signInParameters","forcesignin","nonceErrorSeen","signIn","slice","mfalogin"].forEach((e=>{a(n,e,!0)}));const i=/#.*|$/.exec(t.location.href)[0];let l;i.startsWith("#code=")?(l=s(),l.msalHash=i):l={environment:r,userQuery:o(n),portalQuery:c,hash:i,msalHash:void 0},e.getOrSetBootParameters(e,JSON.stringify(l))}},e.savePageTelemetry=function(r){const n=t.performance&&t.performance.timing;if(n){const t={id:r,fetchStart:n.fetchStart,requestStart:n.requestStart,responseStart:n.responseStart,responseEnd:n.responseEnd,domComplete:n.domComplete};e.sessionStorage.setItem(`PageTelemetry_${r}`,JSON.stringify(t))}},e.getUserQueryValue=i,e.getPortalUri=function(e,t,r){r=r||{};const n=s(),o=n.hash||"";return l(e,t,r.userQuery||n.userQuery,r.portalQuery||n.portalQuery)+o},e.getPortalEnv=function(){return location.hostname.split(".")[0].toLowerCase()}}(MsPortalImpl||(MsPortalImpl={})),function(e){var t="object"==typeof global?global:"object"==typeof self?self:"object"==typeof this?this:{};function r(e,r){return e!==t&&("function"==typeof Object.create?Object.defineProperty(e,"__esModule",{value:!0}):e.__esModule=!0),function(t,n){return e[t]=r?r(t,n):n}}"function"==typeof define&&define.amd?(
|
2 |
+
define("tslib",["exports"],(function(n){e(r(t,r(n)))})),require(["tslib"])):"object"==typeof module&&"object"==typeof module.exports?e(r(t,r(module.exports))):e(r(t))}((function(e){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])};__extends=function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){Object.defineProperty(this,"constructor",{configurable:!0,value:e,writable:!0})}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)},__assign=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},__rest=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)t.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]])}return r},__decorate=function(e,t,r,n){var o,a=arguments.length,s=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,r,n);else for(var i=e.length-1;i>=0;i--)(o=e[i])&&(s=(a<3?o(s):a>3?o(t,r,s):o(t,r))||s);return a>3&&s&&Object.defineProperty(t,r,s),s},__param=function(e,t){return function(r,n){t(r,n,e)}},__esDecorate=function(e,t,r,n,o,a){function s(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var i,c=n.kind,l="getter"===c?"get":"setter"===c?"set":"value",u=!t&&e?n.static?e:e.prototype:null,f=t||(u?Object.getOwnPropertyDescriptor(u,n.name):{}),p=!1,_=r.length-1;_>=0;_--){var d={};for(var y in n)d[y]="access"===y?{}:n[y];for(var y in n.access)d.access[y]=n.access[y];d.addInitializer=function(e){if(p)throw new TypeError("Cannot add initializers after decoration has completed");a.push(s(e||null))};var m=(0,r[_])("accessor"===c?{get:f.get,set:f.set}:f[l],d);if("accessor"===c){if(void 0===m)continue;if(null===m||"object"!=typeof m)throw new TypeError("Object expected");(i=s(m.get))&&(f.get=i),(i=s(m.set))&&(f.set=i),(i=s(m.init))&&o.unshift(i)}else(i=s(m))&&("field"===c?o.unshift(i):f[l]=i)}u&&Object.defineProperty(u,n.name,f),p=!0},__runInitializers=function(e,t,r){for(var n=arguments.length>2,o=0;o<t.length;o++)r=n?t[o].call(e,r):t[o].call(e);return n?r:void 0},__propKey=function(e){return"symbol"==typeof e?e:"".concat(e)},__setFunctionName=function(e,t,r){return"symbol"==typeof t&&(t=t.description?"[".concat(t.description,"]"):""),Object.defineProperty(e,"name",{configurable:!0,value:r?"".concat(r," ",t):t})},__metadata=function(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},__awaiter=function(e,t,r,n){return new(r||(r=Promise))((function(o,a){function s(e){try{c(n.next(e))}catch(e){a(e)}}function i(e){try{c(n.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(s,i)}c((n=n.apply(e,t||[])).next())}))},__generator=function(e,t){var r,n,o,a,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function i(i){return function(c){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;a&&(a=0,i[0]&&(s=0)),s;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,n=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!(o=s.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){s.label=i[1];break}if(6===i[0]&&s.label<o[1]){s.label=o[1],o=i;break}if(o&&s.label<o[2]){s.label=o[2],s.ops.push(i);break}o[2]&&s.ops.pop(),s.trys.pop();continue}i=t.call(e,s)}catch(e){i=[6,e],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,c])}}},__exportStar=function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||__createBinding(t,e,r)},__createBinding=Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]},__values=function(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},__read=function(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,a=r.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(n=a.next()).done;)s.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(o)throw o.error}}return s},__spread=function(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(__read(arguments[t]));return e},__spreadArrays=function(){for(var e=0,t=0,r=arguments.length;t<r;t++)e+=arguments[t].length;var n=Array(e),o=0;for(t=0;t<r;t++)for(var a=arguments[t],s=0,i=a.length;s<i;s++,o++)n[o]=a[s];return n},__spreadArray=function(e,t,r){if(r||2===arguments.length)for(var n,o=0,a=t.length;o<a;o++)!n&&o in t||(n||(n=Array.prototype.slice.call(t,0,o)),n[o]=t[o]);return e.concat(n||Array.prototype.slice.call(t))},__await=function(e){return this instanceof __await?(this.v=e,this):new __await(e)},__asyncGenerator=function(e,t,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n,o=r.apply(e,t||[]),a=[];return n={},s("next"),s("throw"),s("return",(function(e){return function(t){return Promise.resolve(t).then(e,l)}})),n[Symbol.asyncIterator]=function(){return this},n;function s(e,t){o[e]&&(n[e]=function(t){return new Promise((function(r,n){a.push([e,t,r,n])>1||i(e,t)}))},t&&(n[e]=t(n[e])))}function i(e,t){try{(r=o[e](t)).value instanceof __await?Promise.resolve(r.value.v).then(c,l):u(a[0][2],r)}catch(e){u(a[0][3],e)}var r}function c(e){i("next",e)}function l(e){i("throw",e)}function u(e,t){e(t),a.shift(),a.length&&i(a[0][0],a[0][1])}},__asyncDelegator=function(e){var t,r;return t={},n("next"),n("throw",(function(e){throw e})),n("return"),t[Symbol.iterator]=function(){return this},t;function n(n,o){t[n]=e[n]?function(t){return(r=!r)?{value:__await(e[n](t)),done:!1}:o?o(t):t}:o}},__asyncValues=function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e="function"==typeof __values?__values(e):e[Symbol.iterator](),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(r){t[r]=e[r]&&function(t){return new Promise((function(n,o){(function(e,t,r,n){Promise.resolve(n).then((function(t){e({value:t,done:r})}),t)})(n,o,(t=e[r](t)).done,t.value)}))}}},__makeTemplateObject=function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e};var r=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t};__importStar=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return r(t,e),t},__importDefault=function(e){return e&&e.__esModule?e:{default:e}},__classPrivateFieldGet=function(e,t,r,n){if("a"===r&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===r?n:"a"===r?n.call(e):n?n.value:t.get(e)},__classPrivateFieldSet=function(e,t,r,n,o){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!o)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!o:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?o.call(e,r):o?o.value=r:t.set(e,r),r},__classPrivateFieldIn=function(e,t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?t===e:e.has(t)},__addDisposableResource=function(e,t,r){if(null!=t){if("object"!=typeof t&&"function"!=typeof t)throw new TypeError("Object expected.");var n;if(r){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");n=t[Symbol.asyncDispose]}if(void 0===n){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");n=t[Symbol.dispose]}if("function"!=typeof n)throw new TypeError("Object not disposable.");e.stack.push({value:t,dispose:n,async:r})}else r&&e.stack.push({async:!0});return t};var n="function"==typeof SuppressedError?SuppressedError:function(e,t,r){var n=new Error(r);return n.name="SuppressedError",n.error=e,n.suppressed=t,n};__disposeResources=function(e){function t(t){e.error=e.hasError?new n(t,e.error,"An error was suppressed during disposal."):t,e.hasError=!0}return function r(){for(;e.stack.length;){var n=e.stack.pop();try{var o=n.dispose&&n.dispose.call(n.value);if(n.async)return Promise.resolve(o).then(r,(function(e){return t(e),r()}))}catch(e){t(e)}}if(e.hasError)throw e.error}()},e("__extends",__extends),e("__assign",__assign),e("__rest",__rest),e("__decorate",__decorate),e("__param",__param),e("__esDecorate",__esDecorate),e("__runInitializers",__runInitializers),e("__propKey",__propKey),e("__setFunctionName",__setFunctionName),e("__metadata",__metadata),e("__awaiter",__awaiter),e("__generator",__generator),e("__exportStar",__exportStar),e("__createBinding",__createBinding),e("__values",__values),e("__read",__read),e("__spread",__spread),e("__spreadArrays",__spreadArrays),e("__spreadArray",__spreadArray),e("__await",__await),e("__asyncGenerator",__asyncGenerator),e("__asyncDelegator",__asyncDelegator),e("__asyncValues",__asyncValues),e("__makeTemplateObject",__makeTemplateObject),e("__importStar",__importStar),e("__importDefault",__importDefault),e("__classPrivateFieldGet",__classPrivateFieldGet),e("__classPrivateFieldSet",__classPrivateFieldSet),e("__classPrivateFieldIn",__classPrivateFieldIn),e("__addDisposableResource",__addDisposableResource),e("__disposeResources",__disposeResources)})),function(e){let t=window,r=t.document,n=t.location,o=r.body;function a(e){return(e||"")+""}e.stringify=a;let s=a(navigator&&navigator.userAgent);function i(e,t){return e.includes(t)}const c=JSON.stringify,l=encodeURIComponent;e.cobrand=function(){};const u="Redirect_SomeRandomKey";function f(e){const t=i(s,"Windows");if((i(s,"Macintosh; Intel")||t)&&i(s,"Safari")&&!i(s,"Chrome")&&function(e){if(i(s,e)){const t=new RegExp(`\\s${e}/(\\d+)[\\.\\s$]`).exec(s),r=a(t&&t[1]);return parseInt(r,10)}}("Version")<=11)return e+"?reason=isSafari";const n=!!r.documentMode,o=/Trident\//i.test(s),c=i(s,"MSIE"),l=!Array.prototype.find;return n||o||c||l?e+"?reason=isIE":Promise&&Promise.prototype.finally&&Promise.allSettled&&Promise.any?"":e+"?reason=promise"}function p(e){return _("clearedStorage=true",`${e}/Html5StorageExceeded`,!0)}function _(t,r,o){return n.search.includes(t)?r:(o&&(e.localStorage.clear(),e.sessionStorage.clear()),(n.search&&n.search+"&"||"?")+t+n.hash)}function d(e,t){if(void 0!==e)return e;if(t&&t.startsWith("flight:")){const e=parseFloat(t.split(":")[1]);return Math.random()<e?"true":"false"}return t}e.redirect=async function(s){const i=s.portalServerConfig,y=s.portalServerFeatures,m=i.errorUri;if("true"===e.localStorage.getItem("MsalJsV3")?e.sessionStorage.setItem("MsalJsV3","true"):e.sessionStorage.removeItem("MsalJsV3"),"aad.portal.azure.com"===n.hostname.toLowerCase()&&["","#","#home"].includes(n.hash.toLowerCase()))return void(n.href=`https://entra.microsoft.com${n.pathname||""}${n.search||""}#view/Microsoft_AAD_IAM/TenantOverview.ReactView`);let h;try{const l=function(t){let r;try{[e.localStorage,e.sessionStorage].forEach((e=>{if(r=e.length,e.setItem(u,u),u!==e.getItem(u))throw u;e.removeItem(u)}))}catch(e){return 22===e.code&&r?p(t):_("storagepolyfill=true",`${t}/UE_NoHtml5Storage`)}}(m),g=i.portalQuery,v=i.applicationPath,w=i.supportedLanguages,b=e.parseQuery(t.location.search),S=[...b],I=i.unsupportedUri,P=(t,r)=>d(e.extractValueFromQueryString(S,"feature."+t),r),O=t=>e.getFirstQueryValue(S,t,!0);if(h=f(I)||function(e){return t.Intl?"":e+"?reason=intl"}(I)||l,!h){const l=e.sessionStorage,u=e.localStorage;u.removeItem("signOutAll");const f=O("Referrer");g.env=e.getPortalEnv(),"true"===O("feature.armbreakglass")&&l.setItem("Redirect_ArmBreakGlass","true");const p=O("sessionId"),_=FxImpl.createGuid(p,!0);l.setItem("Redirect_SessionId",_),e.trySaveAllowedState(i.environment,S,!0,g),e.savePageTelemetry("EntryPoint"),l.setItem("Redirect_Referrers",c([a(r.referrer),a(f)]));const I=`${n.protocol}//${n.host}${v}`,j=function(t,r){const n=[];return Object.keys(r).forEach((o=>{const a="feature."+o,s=d(e.extractValueFromQueryString(t,a),r[o]);s&&n.push(`${a}=${s}`)})),n.join("&")}(S,{settingsportalinstance:y.settingsPortalInstanceValue,inmemorysettings:y.inMemorySettingsValue,argsubscriptions:y.argSubscriptionsValue,showservicehealthalerts:y.showServiceHealthAlertsValue,prefetchtokens:y.prefetchTokensValue,internalgraphapiversion:y.internalGraphApiVersionValue,cae:y.caeValue,selftoken:y.selfTokenValue,globalresourcefilter:y.globalResourceFilterValue,msaljs:y.msalJsValue,fetchpolicyforrestypes:y.fetchPolicyForResTypesValue,testcrosscloudpuid:y.testCrossCloudPuidValue,useredirecthint:y.useRedirectHintValue,usetenanthint:y.useTenantHintValue,nativebroker:y.nativeBrokerValue,msaljswithfallback:y.msalJsWithFallbackValue});let E=e.getTenantFromPath(n.pathname,!0);const x=u.getItem("preferredPortalUri"),R=parseInt(function(e,t){const r=e.getItem(t);return e.removeItem(t),r}(l,"Redirect_PreferredPortalRedirectCount"))||0,T=P("useredirecthint",y.useRedirectHintValue),V=P("msaljs",y.msalJsValue);if(!E&&function(t){const r=e.sessionStorage.getItem("authState");if(r){try{const n=JSON.parse(r),o=n?.oAuthToken;let a=0;o?.authHeader&&(a=o.expiresAt);let s=o&&a>=Date.now();const i=n?.selfOAuthToken;if(i?.authHeader&&(s=s&&(i.expiresAt||0)>=Date.now()),s=t?s&&!!n.isInitializedUsingSpaAuthCode:s&&!!n.refreshToken,s)return e.localStorage.removeItem("authState"),!0}catch(e){}e.sessionStorage.removeItem("authState")}return!1}("true"===V))h=e.getPortalUri(I,w);else if("true"===T&&x&&x!==n.hostname&&!(S||[]).length&&!E&&R<3)l.setItem("Redirect_PreferredPortalRedirectCount",R+1+""),h=e.getPortalUri(x,w,{portalQuery:i.portalQuery});else{let r=parseInt(l.getItem("Redirect_IdpRedirectCount"))||0;E=/^#@([^/]*)|$/.exec(/#.*|$/.exec(t.location.href)[0])[1]||E;const c=P("usetenanthint",y.useTenantHintValue);let f="";const p=u.getItem("tenantHint");if("true"===c&&p&&(f=`&tenantHint=${p}`,u.removeItem("tenantHint"),l.setItem("usedTenantHint",p)),"true"===e.localStorage.getItem("MsalJsLoginEnabled"))try{let t=E.startsWith("@")?E.substring(1):E;t=t||"organizations";const r={armAadResource:i.armAadResource,authority:i.authority,forceSignInQueryStringValue:e.extractValueFromQueryString(b,"forcesignin")||"",portalClientId:i.portalClientId,portalRequestedTenantInfo:{id:t,domainName:"",displayName:""}};await e.loginUsingMsalJs({isNativeBrokerEnabled:e.useMsalJsV3InCurrentSession()&&"true"===P("nativebroker",y.nativeBrokerValue),portalOptions:r,portalServerMsalJsConfig:s.portalServerMsalJsConfig,source:"Startup",userQueryStringInUrl:b,loginStage:{type:"Startup"}})}catch(t){e.saveLog({source:"Startup",action:"FallbackToLegacySignIn",data:{errorMessage:t.message+(t.stack||"")||t.toString()}}),e.sessionStorage.removeItem("PortalRequestedTenant")}const d=t.document.createElement("script"),h=e.localStorage.getItem("SavedDefaultDirectory"),g=h?`&savedDefaultDirectory=${h}`:"",v=["signInParameters","loginHint","selectAccount","forcesignin","whr","slice","mfalogin"].reduce(((t,r)=>{const n=e.extractValueFromQueryString(b,r);return n&&(t+=`&${r}=${n}`),t}),"");d.src=`${i.signinUri}${E}?sessionId=${_}&${j}&idpc=${r}${f}${g}${v}`,o.appendChild(d),setTimeout((()=>{l.setItem("Redirect_IdpRedirectCount",a(++r)),r%3?n.reload():n.href=m+"/UE_IDP"}),6e4);const S=e.getPortalUri(I,w),O=new XMLHttpRequest;O.open("GET",S),O.send(null)}}}catch(e){if(22===(e=e||{}).code)h=p(m);else{let t=l(a(e));const r=e.message;r&&(t=l(r)+"&stack="+l(e.stack)),h=m+"/Unhandled?err="+t}}h&&(n.href=h)}}(MsPortalImpl||(MsPortalImpl={}));
|
3 |
+
MsPortalImpl.redirect({"portalServerFeatures":{"settingsPortalInstanceValue":"","argSubscriptionsValue":"true","showServiceHealthAlertsValue":"true","inMemorySettingsValue":"","prefetchTokensValue":"","internalGraphApiVersionValue":"true","caeValue":"","selfTokenValue":"true","globalResourceFilterValue":"true","msalJsValue":"true","fetchPolicyForResTypesValue":"true","testCrossCloudPuidValue":"true","useRedirectHintValue":"true","useTenantHintValue":"true","nativeBrokerValue":"","msalJsWithFallbackValue":""},"portalServerConfig":{"portalQuery":{"configHash":"PkNJfkTTGDC1","pageVersion":"14.232.2.114.232.0.192030.241204-1800"},"environment":{"extensionsManifestHash":{"assetTypes":[["fzk-_69RhleV","7qKquWseJrkc"],["S9Wpr66CYe3e","qm2J0tGhtDkL"],["63VZs6bRmsRs","D9LjZFkHZr11"],["uO9aEWpC1fdv","lgMhtx-9cI-2"],["f8L4mqUdJz1L","m11RsozBSzDH"],["hsFXU-hOeL82","ej-vAIYmGCQq"],["nlEwPPz58LyX","AfNNA5UCTEL2"],["lfo0gzQzJz9-","-7LFSki2_sMF"],["5kYOqbRPWmEK","ORuUD_P3endQ"],["Y2vvbX_Rvumq","01piWrI6Au-y"],["gjtZ8sGyp4OO","8rNMaUIsWfLi"],["itGrl7kOnTAL","kQ5_wfwI6ke-"],["OX-PxLWSUAyu","29-UaJ153mcJ"],["e75KiN-kcag5","hfjHt4rpuDws"],["qKl_YGNNLpgm","i4ilPWfgF9L1"],["NNWIfGIdGBOz","Mqu9QNBfxi9d"],["Um_Q7Xxn4LoL","TfhWontS-zfY"],["FunRw0SBrz-y","TKBDdc8DYfTV"],["uPIdchkR9NCf","gwjpVZk-R3EF"],["YWyscj-Bbc8A","Pv9IonpkkVjz"]],"assetTypesBrowse":[["qvrLhGn7e2R4","k0ugWJ0ShOZp"],["j0g2-Hacu8Mz","MJaTq082kcbi"],["FO9H3As-NK_Z","2a5Ov5UJCbRE"],["ox80INLlPEV9","9aW6em_jJQC3"],["Z-4kkvFTLL9o","33Kt3-bBuD1P"],["PC9QtBTRmw0J","Hy7eV-yQID_S"],["Bo0uZf70dO8q","uCR_2kPMA6J2"],["OczBJeE44L_R","ODQRV4S11fDB"],["YOIMeIY_3b5i","DSki_KGZl8d7"],["HU5-BZJZdnuP","lYIrURBG4Lqy"],["ZMUm0ooJQ6NF","gm0XkejG_8xT"],["rG2tvJMMDdlb","x_GW82WkeEg4"],["LB5F9b6T08eL","2KI6RKed0JGj"],["Ojt-hlOttygN","cR5nGwbv6a2m"],["bQoiNaki2TJb","T19sHqQ3SwGA"],["WR0mWyAxlg7T","4a7Vp_bkZpdR"],["H4Tu3lmgvTHO","lqErdT5QACv0"],["qT8myUb9HMFR","p-5MSr6xJmus"],["Ri1cSHbeTuAu","ZkJWwMzomniS"],["i1I2_A9v44uu","nke5AHnj8ZSu"]],"assetTypesMenu":[["CWtcNNXk2KL1","uFKWwT7YvAkv"],["e7KXHJk-avNU","iU2aG3LGKPDV"],["t0qwGn3Sh5Jq","OrjT0fAMr23X"],["WAHUieSFstvP","1IOdW_QxhRSB"],["vxz-XIQvV9GM","rXnurc9n0VMf"],["PQoWYolC8peP","D_ExihZtW3Sx"],["1rFkcfM6KHPc","0-FGkZ7b5dcT"],["H8VkacN6M97m","G9mAdiYLEziy"],["ti8zS-UYlEqf","rrOIsVgP6js9"],["Qnl6ft6xN1VF","cFsqD6AFJzsf"],["XKpS9RXObIV_","SZSGpOpzcYOQ"],["1yQR7DArf2v5","6R8aUhfjAYXv"],["Gtn9DnrZPZWd","v1Ipp-i6Wu7f"],["8q6jH6B7XHr-","l3lgjBhPVk8Z"],["Yz2yEmoWSbJ6","M5GV16zUGPDx"],["ZmAWjZ7WM0IJ","WEKIhRAeYJA-"],["XAKw_v9-VxCS","bzIjcnJbz0Yq"],["Yk6a0FeJxIwR","KO8BOW3uk4bq"],["TDjWvC3HDh-V","7imnhVpSQgMU"],["nO5C_dvOviFr","h3dhZ9Ns_Gcg"]],"copilot":[["ouDuYMslcsxa","7SQeikVg_3hD"],["MXD8yELY-yHZ","z3OaWXP9098p"],["kc6Utns353tU","buswQ98vC4_T"],["5zrpupczXHyD","UhlebxtBtW3q"],["_GLNtXOEwRvM","iyE71UkBh07E"],["GWPtYjaB8SDQ","QL_UqEKa-yCU"],["rcnc3X_EIXxM","VjjPP0d59fow"],["5I_PqbCj6-Ii","rRe9XZYyRj4E"],["StZJDNvZWXPP","1JTBG__YtPPN"],["8Q4CmN6uCCNV","Dhiry0gCqz5i"],["FpsdPCUzdtZW","MGup3TJpskAh"],["R_tSUh_XRDkd","3P89f0O1ZXip"],["cjtUdZD8I_5B","GVWlIwMJhb4j"],["DVfQrjDrb7TP","QivCmgrzoSrS"],["WMbY14iQAr0k","E-aphlQTskeT"],["NsKdCJI93FMC","zDn05N4rB4tH"],["6QfwwbgJzBSD","gX4njVT_3KJ7"],["CWgoWYtGDDlz","5iHzHXhAZYvS"],["_BwfFzFCEDNV","Bus5RHfbmTvM"],["ouDuYMslcsxa","7SQeikVg_3hD"]],"extensionConfiguration":[["cnr4lI4ldr5Q","lQ8OpLVfTNJY"],["Kp62fcUM8DI3","CKVXKnkKG407"],["gIAGw_-LpU5B","2b_xV57k3YJ_"],["tMa_FyZOpN5m","T0PzmIpvzKYj"],["w9DveOaTHwH6","59cdcEU4f6DO"],["24srI6dhJoX2","cF-W7NoE72Pt"],["8VtWR5DMNM3C","gG1ThAqzqZmN"],["gkWpy3AXtSKV","YbAZjRcMbbdK"],["fAWj2q_FPxff","CXaK7Jha5JAq"],["UDODSIVHxNli","A2YkVzeZcg8S"],["WfBdDij2h6zR","oDuqmQ_q3Y4A"],["aEtFTZXWV8u-","RdcrT5VaD_xh"],["8XeWOKheoIFe","QYHNtCvQEYiO"],["6nrmyo4wU6oh","RUfXxU4KxT-i"],["VxAaqQKI2oU0","u5mjgeema9yn"],["cGXh86NHmtMa","Wpp0eMDjBoZ5"],["UqaZ8-BycncW","W4dIVKsUe0iI"],["79203hFrDTtd","LonWBUJp0do3"],["cev2eIJQfXX7","pxY-6deZDsUY"],["cnr4lI4ldr5Q","lQ8OpLVfTNJY"]],"featureCards":[["I1hn0UAALVce","YuOmwVntpQ-g"],["pxnsxruXwd0c","NxsMn96zL-BN"],["G0Iyhvc2wqJx","EpZcQuk5oNvl"],["iXEZQ87gF2_Q","fUIidLiWUICi"],["_7h5vlNnHTLc","77o1fQKTVo9s"],["sw2f5Xtu9701","RK9TlQE3Y-4E"],["AReK7hVk4d07","OJIW3uT1v1T_"],["flWb8MWO9C6n","LnvE9P7NW9HY"],["7OierOMRZ4Jt","yrTAxAQ31lAB"],["tdkOzom5NCon","CSQ-a7AFrmAs"],["6Sh5mXBwo07O","OIxiu7uqEJZp"],["bRAxCirrxaAD","LCqBejFcNjxj"],["tMAjZfOAYJey","Vi9i88PdJwzh"],["X_Tyk1CfHZb_","7AEv-KOwVfPs"],["i9RyD3jANwyi","VUd-wR6weM2i"],["C_a5lL75JIj7","EmK5uW2Xdv09"],["QdK3BoF609ph","lMhO64cbUgjc"],["LW3tOEfly-ba","s4abFqoYGXA_"],["DXgk_WmPgr-v","J1JB92WmrLiH"],["UYS0IppCfI4o","KvIuHXUyUcW-"]],"galleryParts":[["QjhJ-2h6a97W","4JzwEgxQA6Cr"],["S2FifjTFJUOM","QB03wZjs_oM_"],["tpnPbYYHZXU-","xv_t88PJ4TLu"],["UHw1MvPVlm6m","1zQ_cS7omLr8"],["qfUj1eSCrVZB","AOGOEt_PPLM0"],["nNNfTWoy__oL","p08_5o9d7UKp"],["pyK5nXWwq5Oo","M8XylWafSRfr"],["1ObU1E0sc1d7","1g5EHfMgMNwD"],["j6qjqDbi_XQF","vB27yr5gbL80"],["8CLjvzBPmxwU","W3Go0Yc12edf"],["p0mZl0LqBWCm","jYNncrX8DXlB"],["h6ZvFwh7trSd","5D-1sCgsim9C"],["GWWi0UjJp_zO","afaZ7lL_eR_y"],["pmwayLaCDf-k","Hb10bufiO3LK"],["Dq550vx3Td_Z","PucHcdYzgAR3"],["Aw_KndW3Wvpt","xxeAhsbe6Sfa"],["wUj_JF3Uv-rw","pUHDMdWzedbS"],["77TOvkkolUfZ","kEDE1L0w5FKq"],["UGAI8O444nFf","HoZP0mxbWZ3B"],["jP-_ZYFldW2c","jl-qea7pjvrT"]],"surveys":[["u5TJ9-nL00uV"],["75h0Uvou7ijr"],["oBjMRZQ2QyOF"],["4vgJhlz42Th3"],["PvPl442OXlH2"],["l_o5Is9uKxhK"],["VY9H2_7QwDnG"],["JInEBj6TZeWq"],["7ieeg9J2ZdeB"],["5AWM-mKbZhgd"],["y_x5rbxnTGZE"],["QofqBGmeVcJS"],["JWnY4kFk1Cq4"],["NdqGd8Oc74D_"],["LSjT4UeLIA8n"],["qFDn2JD0JbKl"],["XZrGAa9SqFYt"],["3JQPr8M_K0uf"],["9E2T9z2pfNhx"],["WZYZiwCO6OLd"]],"tourGuide":[["Evz5gZtP5b0a","8uz4k71t3lEh"],["JHUdIZSd0bNI","d8Nj9BPxFFOt"],["-V8SI3C3bu8S","st6jkbhzAqk5"],["vGsd7HRAZ8SJ","0zXfXg60tZ4I"],["z2MHaEZ2uD31","Aa6hn4jtXWel"],["kW4Art5k5B-R","t0spezf2b0OG"],["psSLqb23CI3o","j5g_KpfDsa2e"],["SUkoLKBKGuX7","aogKP7OKLeGA"],["y6elXb9Y5S7r","hRU83jSFG6Pm"],["lamMxWXect8C","-nNTkTPkpiWf"],["CJqhqKgLVgJw","djBC9BlEeII2"],["6fdaJilOmr7g","dMjUBXmxVOu-"],["kn85p-VBLCY5","8JMXlQqa-UEo"],["bxW6gatLgX39","pe4YdkQG9cVE"],["GXOjyyJdIEld","LfYVAiAyruC_"],["_0wEC-nUc-TL","xRh0gD10u6Q2"],["hZGRRTk9bwEv","ZBhjGiC9aQML"],["G2C82Xy0hFQv","yBlU4dtQD7bM"],["F7D_jAkcnb9a","zqQ1wOCDNnWp"],["Evz5gZtP5b0a","8uz4k71t3lEh"]],"uiDefinition":[["HpPRhYJLYEF8","B7PD1MrzXEvN"],["clbfpnA6ASj0","5Vz_YmPJyWZ1"],["-icDFziQqCCR","A6dGT4LpHSz1"],["k0aa2y7MsGFf","7kMXGl9AMhQK"],["7iZdAVFY7A0_","rAar-HnoXTXL"],["bOtx6VKhHDWH","KB4BcLB-ZuhB"],["QzuwPLi1P5pU","8KTNghiWYKUA"],["__kr3fZQdfOM","NeHoQTKikdDJ"],["d1RiZE6nrey8","tiuEs0M1Ymb3"],["JO7C7S6yf7l4","xh7RFZHoc-ab"],["uFO7QKLx4noz","as2e_pG4sV2X"],["xIWsszZMug86","5m9VVvSb9_qg"],["-KnGDSr5S9Zl","QfJ5aJkmqr1e"],["9WFY72TbFeDT","kC58WijPCp-5"],["LI85nb9Ya5JT","JIwREiieai01"],["i1YaeUvs6cGf","M_rg9Lv8bXuX"],["9UNVkDlH87Fa","2u_EWfYU1K1L"],["i1m9rO_iBEoY","oLuB4BDWbMHy"],["ChOsyjp3cI9g","Jc32eWGymJXd"],["HpPRhYJLYEF8","B7PD1MrzXEvN"]]},"extensionsPageVersion":{"AppInsightsExtension":["1.0.20241219.2257","1.0.20250106.2349"],"AppPlatformExtension":["1.0.02867.308"],"AzureCacheExtension":["1.3.02875.422"],"AzureTfsExtension":["19.247.35422.10"],"Azure_Marketplace_Astronomer":["0.9.028731-484067"],"Azure_Marketplace_Confluent":["0.9.0287814-460370"],"Azure_Marketplace_Datadog":["2.2101.028732-8148805"],"Azure_Marketplace_Dell":["0.9.028251-109367"],"Azure_Marketplace_Dynatrace":["0.9.029281-38099"],"Azure_Marketplace_Elastic":["0.1.028752-867720"],"Azure_Marketplace_Informatica":["0.9.028801-5467"],"Azure_Marketplace_Liftr_Logz":["0.9.028681-288"],"Azure_Marketplace_Liftr_NewRelic":["0.9.028791-182848"],"Azure_MarketPlace_NativeISVService":["0.9.0287826-94422","0.9.0289527-2972966"],"Azure_Marketplace_Neon":["0.9.028611-398878"],"Azure_Marketplace_NGINX":["2.2101.028681-150416"],"Azure_Marketplace_PaloAltoNetworks_Cloudngfw":["1.0.0.241217-0719"],"Azure_Marketplace_PureStorage":["0.9.029231-085211","0.9.029291-4748"],"Azure_Marketplace_Qumulo":["0.1.028732-427870"],"Azure_Marketplace_SamplePartner":["0.9.026611-97"],"Azure_Marketplace_SolarWindsObservability":["0.9.028741-97813"],"Azure_Marketplace_SplitIO":["1.0.028671-84714"],"DxExtension":["14.216.1.114.216.0.19852.241025-1953"],"HubsExtension":["14.232.2.114.232.0.192030.241204-1800/Zibck4M3AFmV"],"Microsoft_AAD_AuthenticationMethods":["1.0.02811103"],"Microsoft_AAD_B2CAdmin":["1.1.721.0"],"Microsoft_AAD_ConditionalAccess":["1.0.02899807"],"Microsoft_AAD_Connect_Provisioning":["3.0.02892991"],"Microsoft_AAD_DecentralizedIdentity":["1.0.02885406"],"Microsoft_AAD_Devices":["1.0.02868505"],"Microsoft_AAD_DomainServices":["2.0.170.0"],"Microsoft_AAD_DXP":["1.0.02895.1329-"],"Microsoft_AAD_ERM":["1.2.870.355"],"Microsoft_AAD_HybridAuthentication":["1.0.02655.90"],"Microsoft_AAD_IAM":["3.0.029001752"],"Microsoft_AAD_IdentityProtection":["1.0.02872276"],"Microsoft_AAD_LifecycleManagement":["1.0.02901.244"],"Microsoft_AAD_RegisteredApps":["1.0.2896.1143"],"Microsoft_AAD_UsersAndTenants":["1.0.02892.1202-352"],"Microsoft_AzureCXP_BusinessReview":["0.1.4138"],"Microsoft_AzureCXP_Cpoe":["0.1.3992"],"Microsoft_AzureCXP_EngageHub":["0.1.4208"],"Microsoft_AzureCXP_EngageHubInsights":["0.1.4024"],"Microsoft_AzureCXP_EngageHub_Spaces":["0.1.3950"],"Microsoft_AzureCXP_EngageHub_Support":["0.1.4261-0001"],"Microsoft_AzureStackHCI_PortalExtension":["1.0.028923178"],"Microsoft_AzureStack_LabHardware":["1.0.850.0"],"Microsoft_Azure_ActivityLog":["3.0.02782.235"],"Microsoft_Azure_AD":["1.0.4309.0","1.0.4341.0"],"Microsoft_Azure_ADHybridHealth":["2.0.02872241"],"Microsoft_Azure_ADU":["3.0.0.4"],"Microsoft_Azure_AdvisorPortalExtension":["1.0.02850.280"],"Microsoft_Azure_AFDX":["1.8.028961464"],"Microsoft_Azure_AgFoodPlatform":["1.0.0.89"],"Microsoft_Azure_AnalysisServices":["1.2.2.63"],"Microsoft_Azure_Analytics":["1.0.02879.1"],"Microsoft_Azure_ANMVerifier":["1.0.02852.93-234","1.0.02872.101-22"],"Microsoft_Azure_AO5GC":["1.0.0.0-2404250546"],"Microsoft_Azure_AP5GC":["2-2410080600","2-2411130747"],"Microsoft_Azure_ApiManagement":["1.1008.0.1"],"Microsoft_Azure_APISecurity":["1.24.12.202016"],"Microsoft_Azure_AppComplianceAutomation":["202411190218"],"Microsoft_Azure_Appliance":["4.0.300.192","4.0.200.137"],"Microsoft_Azure_AppProtection":["1.0.02842.54","1.0.02920.114"],"Microsoft_Azure_ArcCenterUX":["1.0.60.0","1.0.63.0"],"Microsoft_Azure_ArcClusterUX":["1.0.1063.0","1.0.1060"],"Microsoft_Azure_ArcNetworking":["1.4.1.11"],"Microsoft_Azure_ASCInformationProtection":["1.24.12.221028"],"Microsoft_Azure_Attestation":["1.0.14.232.0"],"Microsoft_Azure_AutoManagedVirtualMachines":["1.0.02854.456"],"Microsoft_Azure_AutomaticAKS":["4.12.0.2879"],"Microsoft_Azure_Automation":["7.3.2932.0.241115-0022"],"Microsoft_Azure_AzConfig":["1.0.02872126-1"],"Microsoft_Azure_AzFleet":["5.13.393.1807-1729806492-","5.13.393.1893"],"Microsoft_Azure_Batch":["1.1.02927.368"],"Microsoft_Azure_BCDRCenter":["1.0.02858.1262"],"Microsoft_Azure_Billing":["24.11.02900.175-6330","1.0.02921.1159-120496"],"Microsoft_Azure_BotService":["1.4.1.400371"],"Microsoft_Azure_Capacity":["241122-0516"],"Microsoft_Azure_Cdn":["1.0.02902.416--68770"],"Microsoft_Azure_ChangeAnalysis":["1.0.02852.117"],"Microsoft_Azure_Chaos":["1.0.0-1.0.02859.2-20600","1.0.0-1.0.02923.1-96"],"Microsoft_Azure_ClassicResources":["1.0.10.153"],"Microsoft_Azure_Classic_Compute":["5.13.393.1659"],"Microsoft_Azure_CloudforSovereignty":["1.0.241025.2416"],"Microsoft_Azure_CloudHSM":["1.0.02853.220","1.0.02861.221"],"Microsoft_Azure_CloudNative":["5.13.393.1819","5.13.393.1873"],"Microsoft_Azure_CloudNativeTesting":["2024102820241028.1","2024102820241125.2"],"Microsoft_Azure_CloudPC":["1.0.241212.112391938"],"Microsoft_Azure_CloudServices":["5.13.393.1807-1729702289-"],"Microsoft_Azure_CloudServices_Arm":["5.13.393.1807-1729806510-"],"Microsoft_Azure_CloudTest":["2.0.20250107.1"],"Microsoft_Azure_CodeOptimizations":["1.0.02853.40"],"Microsoft_Azure_CodeSigning":["1.0.20241211.103"],"Microsoft_Azure_CommunicationServices":["1.0.20241216.2"],"Microsoft_Azure_CommunicationsGatewayExtension":["2.0.0.0"],"Microsoft_Azure_CommunityTraining":["1.0.8.1"],"Microsoft_Azure_ComplianceCenter":["1.0.0.20250107064429"],"Microsoft_Azure_Compute":["5.13.393.1807-1733508958-","5.13.393.1893"],"Microsoft_Azure_ComputeHub":["5.13.393.1807","5.13.393.1893"],"Microsoft_Azure_ConfidentialLedger":["23.3.7.2"],"Microsoft_Azure_ConfigManager":["20241204.2"],"Microsoft_Azure_ContainerInsightsExt":["2.0.20241023.2014","2.0.20250107.2318"],"Microsoft_Azure_ContainerRegistries":["1.0.20240829.9"],"Microsoft_Azure_ContainerService":["4.60.1.101/1EqRKWy2d0SP","5.13.393.1894/vI1KG2-BOeC1"],"Microsoft_Azure_ContainerStorage":["5.13.393.1697","5.13.393.1698"],"Microsoft_Azure_Copilot":["1.311.02882.591","1.200.02872.577"],"Microsoft_Azure_CostManagement":["241204-0558"],"Microsoft_Azure_CreateUIDef":["1.0.300.338","1.0.200.604"],"Microsoft_Azure_CtsExtension":["1.2.1.0"],"Microsoft_Azure_CustomerHub":["1.0.300.165","1.0.300.167"],"Microsoft_Azure_Dashboard":["2.0.1890.0"],"Microsoft_Azure_DatabaseInsights":["1.0.02854.428"],"Microsoft_Azure_Databricks":["1.0.02855.267"],"Microsoft_Azure_DataCollaboration":["2.0.20230315-0800"],"Microsoft_Azure_DataFactory":["1.0.20241024.1"],"Microsoft_Azure_DataLakeAnalytics":["20240906.1"],"Microsoft_Azure_DataLakeStore":["5.13.393.1735"],"Microsoft_Azure_DataProtection":["241029-102415"],"Microsoft_Azure_DataShare":["2.0.20241211-0201","2.0.20241211-0102"],"Microsoft_Azure_Dedicated_ClusterStor":["240909-1921"],"Microsoft_Azure_Dedicated_Cray":["240909-1921"],"Microsoft_Azure_Dedicated_Monitoring":["240909-1921"],"Microsoft_Azure_DetonationService":["2.00.00.03"],"Microsoft_Azure_DevCenter":["14.170.0.1.241114-1814"],"Microsoft_Azure_DeviceRegistry":["1.0.02871.97-111120"],"Microsoft_Azure_DeviceUpdate":["1.0.02843.128-101415"],"Microsoft_Azure_DevOpsInfrastructure":["1.0.20250107.1"],"Microsoft_Azure_DevTestLab":["14.170.0.1.241127-2113"],"Microsoft_Azure_DevTunnels":["1.0.231005.2128","1.0.230613.1659"],"Microsoft_Azure_DigitalTwins":["1.0.02829.187-093022"],"Microsoft_Azure_DiskMgmt":["5.13.393.1804-1730162051-","5.13.393.1893"],"Microsoft_Azure_DMS":["5.1.6396.3"],"Microsoft_Azure_DNS":["1.0.02867.222","1.0.02928.243"],"Microsoft_Azure_DNSManagedResolver":["1.0.02816.276","1.0.02927.282"],"Microsoft_Azure_DnsSecurityPolicy":["1.0.02878.100"],"Microsoft_Azure_DocumentDB":["2.0.20241115.7.0","2.0.20250101.1.0"],"Microsoft_Azure_DocumentManagement":["1.0.02852.2"],"Microsoft_Azure_Ea":["20241212.2"],"Microsoft_Azure_EASM":["1.0.02900.1469"],"Microsoft_Azure_ECE":["1.0.02748.15-652409","1.0.02844.22-206"],"Microsoft_Azure_EdgeAIExtension":["1.0.02908.28"],"Microsoft_Azure_EdgeGateway":["1.0.02825.1545"],"Microsoft_Azure_EdgeManagementCopilot":["1.0.02854.246"],"Microsoft_Azure_EdgeOrder":["1.0.02894393"],"Microsoft_Azure_Education":["2024.11.26-1726"],"Microsoft_Azure_ElasticSan":["5.13.393.1807-1731535885-","5.13.393.1893"],"Microsoft_Azure_ELMAdmin":["2.77.02911.2151"],"Microsoft_Azure_EMA":["2.41028.1.6","2.41028.1.12"],"Microsoft_Azure_EmailCommunicationServices":["66616971"],"Microsoft_Azure_EpicManagement":["1.2.10205.10621"],"Microsoft_Azure_EventGrid":["2.0.02871.233"],"Microsoft_Azure_EventHub":["2.0.02879.345"],"Microsoft_Azure_Experimentation":["2.0.02895.64"],"Microsoft_Azure_Expert":["1.20241028.1","1.20241101.1"],"Microsoft_Azure_ExpressPod":["1.0.0"],"Microsoft_Azure_FairfieldGardens":["1.0.02837.66-100800"],"Microsoft_Azure_FileShare":["5.13.393.1803","5.13.393.1864"],"Microsoft_Azure_FileStorage":["5.13.393.1803","5.13.393.1851"],"Microsoft_Azure_FIST":["2024.10.02.160055","2024.06.13.181824"],"Microsoft_Azure_FlowLog":["2.0.0.306.241021-2045"],"Microsoft_Azure_FluidRelay":["1.0.2.4.241014-1713"],"Microsoft_Azure_Frontdoor":["1.0.02793.355--71340517","1.0.02858.386--179125"],"Microsoft_Azure_GeneratedExtension":["1.200.02858.681"],"Microsoft_Azure_GlobalView":["1.0.0.5"],"Microsoft_Azure_GraphDataConnect":["1.20241010.6.0"],"Microsoft_Azure_GTM":["24.12.02904.389-3707","1.0.02913.2615-10063"],"Microsoft_Azure_HDInsight":["1.0.02859.1610"],"Microsoft_Azure_Health":["1.1.1.465","1.1.1.469"],"Microsoft_Azure_HealthBot":["1.0.0.112"],"Microsoft_Azure_HealthDataDeidentification":["1.0.49698.1"],"Microsoft_Azure_HealthModels":["0.2023.78.333"],"Microsoft_Azure_HybridCompute":["1.0.4277.0","1.0.4301.0"],"Microsoft_Azure_HybridData_Platform":["1.0.02901.212"],"Microsoft_Azure_HybridNetworking":["24.8.0.63-241023-2106"],"Microsoft_Azure_IacAutomation":["0.0.1.241017-0944","0.0.1.241018-0643"],"Microsoft_Azure_IdentityGovernance":["1.0.02871.241"],"Microsoft_Azure_IndustrySolutionCenter":["1.0.241111-0553"],"Microsoft_Azure_IoTCentral":["2.0.9070.41921"],"Microsoft_Azure_IotHub":["1.0.02860.545-103117"],"Microsoft_Azure_IoTOperations":["1.0.02881.174-112117"],"Microsoft_Azure_IoT_Defender":["2025-01-01--11-26-39"],"Microsoft_Azure_IPAddressManager":["1.0.02859.150-2636459"],"Microsoft_Azure_Kailani":["5.13.393.1803-1733785378-","5.13.393.1893"],"Microsoft_Azure_KeyVault":["1.2.298.0.241021-1530"],"Microsoft_Azure_Kusto":["1.0.2418.0"],"Microsoft_Azure_LocationServices":["3.0.02871.271"],"Microsoft_Azure_Lockbox":["2.62.0.0"],"Microsoft_Azure_Maintenance":["5.13.393.1807-1729702031-","5.13.393.1893"],"Microsoft_Azure_ManagedHSM":["1.0.02861.409-262501","1.0.02928.482-8060"],"Microsoft_Azure_ManagedLab":["14.226.0.1.241231-1943"],"Microsoft_Azure_ManagedNetwork":["1.0.02859.162-866","1.0.02928.190-2135"],"Microsoft_Azure_ManagedServiceIdentity":["2.1.8974.0"],"Microsoft_Azure_ManagedStorageClass":["1.4.0.202410290745","1.4.0.202411050815"],"Microsoft_Azure_Marketplace":["50.0.02899.41-23270","30.0.02928.35-02549"],"Microsoft_Azure_MarketplaceTransact":["1.0.20241212.4173"],"Microsoft_Azure_Media":["1.0.1421.0"],"Microsoft_Azure_Migrate":["1.0.10.509"],"Microsoft_Azure_MigrateAssessment":["1.0.10.4"],"Microsoft_Azure_MigrateModernization":["1.51.1240903.11134"],"Microsoft_Azure_MLTeamAccounts":["1.0.0.241219-2106"],"Microsoft_Azure_ModSimWorkbench":["0.10.10.2"],"Microsoft_Azure_Monitoring":["22.20241030.2.0.02859.431"],"Microsoft_Azure_MonitoringMetrics":["2.0.20241017.1618","2.0.20250107.1715"],"Microsoft_Azure_Monitoring_Alerts":["1.0.02824.1331","1.0.02891.1370"],"Microsoft_Azure_NetApp":["2407.3.0.1"],"Microsoft_Azure_Network":["5.13.393.1821","5.13.393.1863"],"Microsoft_Azure_NetworkCloud":["5.9.0","5.858.0-1"],"Microsoft_Azure_NetworkCopilot":["1.0.02927.120-5797234"],"Microsoft_Azure_NetworkCopilotExtension":["1.0.02927.52-9799"],"Microsoft_Azure_NetworkingCopilot":["1.0.02873.108-2"],"Microsoft_Azure_NetworkSecurityPerimeter":["1.35.0.185"],"Microsoft_Azure_Network_Access":["1.0.02923.1585"],"Microsoft_Azure_NotificationHubs":["20241218.3.241218-1139"],"Microsoft_Azure_OneInventory":["1.0.02887.222"],"Microsoft_Azure_OneMigrate":["1.0.10.44"],"Microsoft_Azure_OpenEnergyPlatform":["1.0.206"],"Microsoft_Azure_OperationsMgr":["1.2.361.0"],"Microsoft_Azure_OpsMQ":["1.0.02734.96-062721"],"Microsoft_Azure_Orbital":["2024.10.02923.509"],"Microsoft_Azure_OSSDatabases":["2.1.02859122"],"Microsoft_Azure_PaasServerless":["5.246.1.3","5.247.0.2"],"Microsoft_Azure_Peering":["1.2.0.255"],"Microsoft_Azure_PIMCommon":["0.0.0.961"],"Microsoft_Azure_PinToGrafana":["1.2.154.1"],"Microsoft_Azure_Playground":["14.115.4.1"],"Microsoft_Azure_PlaywrightService":["1.0.0.43"],"Microsoft_Azure_Policy":["1.0.9.704"],"Microsoft_Azure_PortalDashboard":["1.100.02850.547","1.100.02928.557"],"Microsoft_Azure_PowerBIDedicated":["1.1.2823.1"],"Microsoft_Azure_PowerPlatform":["0.0.0.72"],"Microsoft_Azure_PrivateDNS":["1.0.02875.231","1.0.02928.241"],"Microsoft_Azure_PrivateModSimWorkbench":["0.10.10.2"],"Microsoft_Azure_ProgrammableConnectivity":["1.1.74","2.111.0-1"],"Microsoft_Azure_ProjectBabylon":["1.0.20241226.422","1.0.20240729.400"],"Microsoft_Azure_ProjectOxford":["241205-0551"],"Microsoft_Azure_Quantum":["1.11.2.4"],"Microsoft_Azure_RecommendationsService":["9.32.02744.262"],"Microsoft_Azure_RecoveryServices":["3.40.2411.283"],"Microsoft_Azure_Relay":["2.0.02851.179"],"Microsoft_Azure_Reservations":["11.19.2024.2050"],"Microsoft_Azure_ResourceMove":["1.1.10909.10739"],"Microsoft_Azure_Resources":["1.0.100.1000","1.0.100.1015"],"Microsoft_Azure_RpExt":["2.0.0.0"],"Microsoft_Azure_SaasHub":["1.0.02894.57-032"],"Microsoft_Azure_SapHanaInstances":["1.0.50.147"],"Microsoft_Azure_SAPManagement":["2.1.11015.10506"],"Microsoft_Azure_SAPMigrate":["1.2.10908.12138"],"Microsoft_Azure_Search":["149376413.20241114.1"],"Microsoft_Azure_Security":["1.25.01.072002"],"Microsoft_Azure_Security_AzureDefenderForData":["1.25.01.061251"],"Microsoft_Azure_Security_CloudNativeCompute":["1.24.12.311812"],"Microsoft_Azure_Security_DevOps":["1.25.01.032223"],"Microsoft_Azure_Security_Insights":["1.0.02923.465-250102-085937","1.0.02928.466-250107-093237"],"Microsoft_Azure_Security_IoT":["2024-12-29--08-15-43"],"Microsoft_Azure_Security_R3":["1.25.01.071638"],"Microsoft_Azure_SentinelUS":["1.0.02924.5502-250103-1623","1.0.02929.5517-250108-1419"],"Microsoft_Azure_ServiceBus":["2.0.02878.214"],"Microsoft_Azure_ServiceFabric":["5.13.393.1807-1729806504-"],"Microsoft_Azure_ServiceHub":["1.300.02860.75"],"Microsoft_Azure_SignalR":["1.0.02880.70--9565"],"Microsoft_Azure_SiteManager":["1.0.02888620"],"Microsoft_Azure_SiteRecovery":["1.51.12410.198"],"Microsoft_Azure_SolutionCenter":["5.13.393.1780","5.13.393.1875"],"Microsoft_Azure_Sphere":["2.0.25002.2"],"Microsoft_Azure_SpringApps":["20241218.1"],"Microsoft_Azure_Stack_Migrate":["2.241101.1914.1"],"Microsoft_Azure_Storage":["5.13.393.1803-1730161979-","5.13.393.1893"],"Microsoft_Azure_StorageCache":["1.1.0.1109"],"Microsoft_Azure_StorageInsights":["4.13.393.1126"],"Microsoft_Azure_StorageMover":["5.13.393.1803","5.13.393.1893"],"Microsoft_Azure_StorageTasks":["5.13.393.1803-1729816167-","5.13.393.1893"],"Microsoft_Azure_StreamAnalytics":["20241119.2"],"Microsoft_Azure_SubscriptionManagement":["1.0.02899.236.20241209-1952"],"Microsoft_Azure_Support":["1.580.20241107.1","1.580.20241029.1"],"Microsoft_Azure_Surface":["2.56.0"],"Microsoft_Azure_Sustainability":["1.0.1.173"],"Microsoft_Azure_Synapse":["1.0.02875.5"],"Microsoft_Azure_TemplateSpecs":["1.0.1.91"],"Microsoft_Azure_Toolbox":["2.0.02847.298"],"Microsoft_Azure_UsageBilling":["1.0.02805.11"],"Microsoft_Azure_VirtualEnclaves":["2.1.235.0"],"Microsoft_Azure_VirtualVisitsBuilder":["1.0.0.20240509190151576"],"Microsoft_Azure_VnfManager":["1.9.0","1.79.0-1"],"Microsoft_Azure_WaveMigration":["1.0.10.6"],"Microsoft_Azure_WhatsNew":["1.0.02900138"],"Microsoft_Azure_Winfields":["1.0.028335"],"Microsoft_Azure_WorkbooksExtension":["1.24.02857.421","1.24.02860.423"],"Microsoft_Azure_WorkloadInsight":["1.0.02819.95"],"Microsoft_Azure_WorkloadInsights":["2.0.20241008.1902","2.0.20241030.1727"],"Microsoft_Azure_WorkloadMonitor":["1.2.10924.10947","3.1.10107.10723"],"Microsoft_Azure_WVD":["1.0.02893.601"],"Microsoft_Bing_Api":["241212-1134"],"Microsoft_CloudHealth_HealthModels":["1.0.02907.87"],"Microsoft_Cognition_MixedReality":["36.0.0.0"],"Microsoft_ConnectedCache":["1.0.3.11"],"Microsoft_ConnectedCache_Ent":["1.0.0.2.25"],"Microsoft_ConnectedCache_Enterprise":["1.0.0.1.15"],"Microsoft_ConnectedCache_ISP":["1.0.0.1.48"],"Microsoft_EMM_ModernWorkplace":["1.2412.201.02"],"Microsoft_Entra_PM":["2024.9.26.1"],"Microsoft_Entra_PMAnalytics":["2024.10.11.1-105554065"],"Microsoft_Entra_PMDashboard":["2024.11.20.1-108585238"],"Microsoft_Healthcare_APIs":["1.0.554184.1","1.0.554553.1"],"Microsoft_Intune":["1.2412.15.3002.241216-2320"],"Microsoft_Intune_Apps":["2.2412.39.3002.241214-1836"],"Microsoft_Intune_DeviceExplorer":["1.0.241205.054721"],"Microsoft_Intune_Devices":["6.2412.38.3005.241218-1933"],"Microsoft_Intune_DeviceSettings":["1.2412.75.3011.250103-2300"],"Microsoft_Intune_Edu":["6.2412.14.3003.241216-2006"],"Microsoft_Intune_Enrollment":["7.2412.45.3003.241216-2046"],"Microsoft_Intune_MTM":["6.2410.1.50"],"Microsoft_Intune_Workflows":["1.2412.82.3002.241217-0650"],"Microsoft_ManufacturingPlatform_DMM":["19.11.2024"],"Microsoft_Marketplace_SolutionFinder":["1.0.20250108.1"],"Microsoft_OneFleet_DataHub":["1.0.02859.268"],"Microsoft_OperationsManagementSuite_Workspace":["3.0.02881.2173","3.0.02920.2221"],"Microsoft_Research_Genomics":["1.0.0.13929"],"Microsoft_Security_Copilot":["93"],"Microsoft_ServicesHub_Extension":["5.5.9.0"],"Microsoft_VideoIndexer":["1.0.02860.1-241031"],"Oracle_Databases_At_Azure":["1.164.0"],"ScanX_Management":["3.0.0.3"],"ServiceLinkerExtension":["2.0.20250106.1"],"SqlAzureExtension":["2.1.02901237"],"Universal_Print":["3.20241115.2"],"VLCentral_Agreement":["1.0.02903.1"],"VLCentral_Amendments":["1.0.02881.26"],"VLCentral_Approval":["1.0.02929.1"],"VLCentral_CaseManagement":["1.0.02879.2"],"VLCentral_HelpAndSupport":["1.0.02896.1"],"VLCentral_Home":["1.0.02894.1"],"VLCentral_OrderCredits":["1.0.02903.2","1.0.02894.2"],"VLCentral_Ordering":["15.0.02928.1"],"VLCentral_OrganizationManagementService":["1.0.02857.2"],"VLCentral_Platform":["1.0.02899.1"],"VLCentral_Quote":["1.0.02903.1"],"VLCentral_ReportingNAnalytics":["1.0.02896.1"],"VLCentral_UUM":["1.0.02865.54"],"VMCP":["1.2.02857.915","1.2.02866.925"],"WandiscoExtension":["1.14.16.0"],"WebsitesExtension":["5.246.3.3","5.247.0.2"]}},"signinUri":"/signin/idpRedirect.js/","errorUri":"/Error","unsupportedUri":"/Error/UE_Unsupported","applicationPath":"","supportedLanguages":["en","cs","de","es","fr","hu","id","it","ja","ko","nl","pl","pt-br","pt-pt","ru","sv","tr","zh-hans","zh-hant","qps-ploc"],"portalClientId":"c44b4083-3bb0-49c1-b47d-974e53cbdf3c","authority":"https://login.microsoftonline.com/","armAadResource":"https://management.core.windows.net/","tokenLifetimeClockSkewIntervalInMs":300000.0,"graphEndpoint":"https://graph.windows.net","orgIdChangePasswordUri":"https://go.microsoft.com/fwlink/?LinkID=522342","changePasswordUri":"https://go.microsoft.com/fwlink/?LinkID=522343","isAdfs":false,"roleIdForCompanyAdmin":"62e90394-69f5-4237-9190-012177145e10"},"portalServerMsalJsConfig":{"site_id":"501430","cobrandid":null,"msafed":null,"nativeBroker":0}});
|
4 |
+
</script></body></html>
|
env.json
ADDED
Binary file (2.46 kB). View file
|
|
git-lfs-windows-v3.6.0.exe
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:ca1c562d22439d3d6a80957d2b21f6633611db494f1251a46d18d7fa7aea52cd
|
3 |
+
size 11406128
|
init.py
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
__init__.py
|
javascript-sdk.htm
ADDED
@@ -0,0 +1,1052 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html><html
|
2 |
+
class="hasSidebar hasPageActions hasBreadcrumb conceptual has-default-focus theme-light"
|
3 |
+
lang="en-us"
|
4 |
+
dir="ltr"
|
5 |
+
data-authenticated="false"
|
6 |
+
data-auth-status-determined="false"
|
7 |
+
data-target="docs"
|
8 |
+
x-ms-format-detection="none">
|
9 |
+
|
10 |
+
<head>
|
11 |
+
<meta charset="utf-8" />
|
12 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
13 |
+
<meta property="og:title" content="Microsoft Azure Monitor Application Insights JavaScript SDK - Azure Monitor" />
|
14 |
+
<meta property="og:type" content="website" />
|
15 |
+
<meta property="og:url" content="https://learn.microsoft.com/en-us/azure/azure-monitor/app/javascript-sdk" /><meta property="og:description" content="Microsoft Azure Monitor Application Insights JavaScript SDK is a powerful tool for monitoring and analyzing web application performance." /><meta property="og:image" content="https://learn.microsoft.com/en-us/media/open-graph-image.png" />
|
16 |
+
|
17 |
+
<meta property="og:image:alt" content="Microsoft Learn" />
|
18 |
+
|
19 |
+
<meta name="twitter:card" content="summary_large_image" />
|
20 |
+
|
21 |
+
<meta name="twitter:site" content="@MicrosoftLearn" />
|
22 |
+
|
23 |
+
<meta name="color-scheme" content="light dark"><meta name="author" content="AaronMaxwell" />
|
24 |
+
<meta name="breadcrumb_path" content="../../breadcrumb/azure-monitor/toc.json" />
|
25 |
+
<meta name="depot_name" content="Learn.azure-monitor" />
|
26 |
+
<meta name="description" content="Microsoft Azure Monitor Application Insights JavaScript SDK is a powerful tool for monitoring and analyzing web application performance." />
|
27 |
+
<meta name="document_id" content="1161fd28-6f64-8733-1ad5-6062e786446a" />
|
28 |
+
<meta name="document_version_independent_id" content="08ac573e-3bb7-f585-a709-0ea51f61fc22" />
|
29 |
+
<meta name="feedback_help_link_type" content="get-help-at-qna" />
|
30 |
+
<meta name="feedback_help_link_url" content="https://learn.microsoft.com/answers/tags/20/azure-monitor/" />
|
31 |
+
<meta name="feedback_product_url" content="https://feedback.azure.com/d365community/forum/3887dc70-2025-ec11-b6e6-000d3a4f09d0" />
|
32 |
+
<meta name="feedback_system" content="Standard" />
|
33 |
+
<meta name="git_commit_id" content="a4532c790eed1ea0e5149f74296d04ee24084c8e" />
|
34 |
+
<meta name="gitcommit" content="https://github.com/MicrosoftDocs/azure-monitor-docs-pr/blob/a4532c790eed1ea0e5149f74296d04ee24084c8e/articles/azure-monitor/app/javascript-sdk.md" />
|
35 |
+
<meta name="learn_banner_products" content="azure" />
|
36 |
+
<meta name="locale" content="en-us" />
|
37 |
+
<meta name="manager" content="orspodek" />
|
38 |
+
<meta name="ms.author" content="aaronmax" />
|
39 |
+
<meta name="ms.custom" content="devx-track-js" />
|
40 |
+
<meta name="ms.date" content="12/07/2024" />
|
41 |
+
<meta name="ms.devlang" content="javascript" />
|
42 |
+
<meta name="ms.reviewer" content="mmcc" />
|
43 |
+
<meta name="ms.service" content="azure-monitor" />
|
44 |
+
<meta name="ms.subservice" content="application-insights" />
|
45 |
+
<meta name="ms.suite" content="office" />
|
46 |
+
<meta name="ms.topic" content="conceptual" />
|
47 |
+
<meta name="original_content_git_url" content="https://github.com/MicrosoftDocs/azure-monitor-docs-pr/blob/live/articles/azure-monitor/app/javascript-sdk.md" />
|
48 |
+
<meta name="page_type" content="conceptual" />
|
49 |
+
<meta name="permissioned-type" content="public" />
|
50 |
+
<meta name="recommendation_types" content="Training" />
|
51 |
+
<meta name="recommendation_types" content="Certification" />
|
52 |
+
<meta name="recommendations" content="true" />
|
53 |
+
<meta name="schema" content="Conceptual" />
|
54 |
+
<meta name="site_name" content="Docs" />
|
55 |
+
<meta name="toc_rel" content="../toc.json" />
|
56 |
+
<meta name="uhfHeaderId" content="azure" />
|
57 |
+
<meta name="updated_at" content="2024-11-07 10:59 PM" />
|
58 |
+
<meta name="word_count" content="2408" />
|
59 |
+
<meta name="persistent_id" content="5ee12f97-7da4-54b5-04e2-b360dc43b1c1" />
|
60 |
+
|
61 |
+
<meta name="cmProducts" content="https://authoring-docs-microsoft.poolparty.biz/devrel/07bb3e10-d135-43ff-bc8b-360497cb39fa" data-source="generated" />
|
62 |
+
|
63 |
+
<meta name="spProducts" content="https://authoring-docs-microsoft.poolparty.biz/devrel/12e559b9-eaf6-4aee-9af7-62334e15f863" data-source="generated" />
|
64 |
+
<meta name="scope" content="Azure, Azure Monitor" /><meta name="github_feedback_content_git_url" content="https://github.com/MicrosoftDocs/azure-monitor-docs/blob/main/articles/azure-monitor/app/javascript-sdk.md" /><link href="https://learn.microsoft.com/en-us/azure/azure-monitor/app/javascript-sdk" rel="canonical"><title>Microsoft Azure Monitor Application Insights JavaScript SDK - Azure Monitor | Microsoft Learn</title><link rel="stylesheet" href="/static/assets/0.4.029026183/styles/site-ltr.css">
|
65 |
+
|
66 |
+
<script id="msdocs-script">
|
67 |
+
var msDocs = {environment: {
|
68 |
+
supportLevel: 'production',
|
69 |
+
accessLevel: 'online',
|
70 |
+
reviewFeatures: false,
|
71 |
+
systemContent: true,
|
72 |
+
azurePortalHostname: 'portal.azure.com',
|
73 |
+
legacyHosting: false,
|
74 |
+
siteName: 'learn',
|
75 |
+
},data: {
|
76 |
+
timeOrigin: Date.now(),
|
77 |
+
contentLocale: 'en-us',
|
78 |
+
contentDir: 'ltr',
|
79 |
+
userLocale: 'en-us',
|
80 |
+
userDir: 'ltr',
|
81 |
+
pageTemplate: 'Conceptual',
|
82 |
+
brand: 'azure',
|
83 |
+
context: {},
|
84 |
+
hasBinaryRating: true,
|
85 |
+
feedbackHelpLinkType:'get-help-at-qna',
|
86 |
+
feedbackHelpLinkUrl:'https://learn.microsoft.com/answers/tags/20/azure-monitor/',
|
87 |
+
standardFeedback: true,
|
88 |
+
showFeedbackReport: false,
|
89 |
+
enableTutorialFeedback: false,
|
90 |
+
feedbackSystem: 'Standard',
|
91 |
+
feedbackGitHubRepo: 'MicrosoftDocs/azure-docs',
|
92 |
+
feedbackProductUrl: 'https://feedback.azure.com/d365community/forum/3887dc70-2025-ec11-b6e6-000d3a4f09d0',extendBreadcrumb: false,isEditDisplayable: true,
|
93 |
+
hideViewSource: false,
|
94 |
+
hasPageActions: true,
|
95 |
+
hasPrintButton: true,
|
96 |
+
hasBookmark: true,
|
97 |
+
hasShare: true,
|
98 |
+
isPermissioned: false,
|
99 |
+
isPrivateUnauthorized: false,hasRecommendations: true,contributors: [{ name: "AaronMaxwell", url: "https://github.com/AaronMaxwell" },{ name: "kainawroth", url: "https://github.com/kainawroth" },{ name: "KrishnaG-MSFT", url: "https://github.com/KrishnaG-MSFT" },{ name: "mattmccleary", url: "https://github.com/mattmccleary" },{ name: "v-jbasden", url: "https://github.com/v-jbasden" },{ name: "prmerger-automator[bot]", url: "https://github.com/prmerger-automator[bot]" },{ name: "arjun-ga", url: "https://github.com/arjun-ga" },{ name: "toddfoust", url: "https://github.com/toddfoust" },{ name: "ramthi", url: "https://github.com/ramthi" }],},
|
100 |
+
functions:{}
|
101 |
+
};
|
102 |
+
</script><script src="https://wcpstatic.microsoft.com/mscc/lib/v2/wcp-consent.js"></script>
|
103 |
+
<script src="https://js.monitor.azure.com/scripts/c/ms.jsll-4.min.js"></script><script src="/static/assets/0.4.029026183/global/deprecation.js"></script><script src="/static/assets/0.4.029026183/scripts/en-us/index-docs.js"></script></head>
|
104 |
+
|
105 |
+
<body lang="en-us" dir="ltr">
|
106 |
+
<div class="header-holder has-default-focus">
|
107 |
+
<a href="#main" style="z-index: 1070" class="outline-color-text visually-hidden-until-focused position-fixed inner-focus focus-visible top-0 left-0 right-0 padding-xs text-align-center has-body-background" tabindex="1">Skip to main content</a><div hidden id="cookie-consent-holder" data-test-id="cookie-consent-container"></div>
|
108 |
+
|
109 |
+
<div id="unsupported-browser" style="
|
110 |
+
background-color: white;
|
111 |
+
color: black;
|
112 |
+
padding: 16px;
|
113 |
+
border-bottom: 1px solid grey;"
|
114 |
+
hidden
|
115 |
+
>
|
116 |
+
<div style="max-width: 800px; margin: 0 auto;">
|
117 |
+
<p style="font-size: 24px">This browser is no longer supported.</p>
|
118 |
+
<p style="font-size: 16px; margin-top: 16px;">Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.</p>
|
119 |
+
<div style="margin-top: 12px;">
|
120 |
+
<a href="https://go.microsoft.com/fwlink/p/?LinkID=2092881 "
|
121 |
+
style="
|
122 |
+
background-color: #0078d4;
|
123 |
+
border: 1px solid #0078d4;
|
124 |
+
color: white;
|
125 |
+
padding: 6px 12px;
|
126 |
+
border-radius: 2px;
|
127 |
+
display: inline-block;
|
128 |
+
">Download Microsoft Edge</a>
|
129 |
+
<a href="https://learn.microsoft.com/en-us/lifecycle/faq/internet-explorer-microsoft-edge"
|
130 |
+
style="
|
131 |
+
background-color: white;
|
132 |
+
padding: 6px 12px;
|
133 |
+
border: 1px solid #505050;
|
134 |
+
color: #171717;
|
135 |
+
border-radius: 2px;
|
136 |
+
display: inline-block;
|
137 |
+
">More info about Internet Explorer and Microsoft Edge</a>
|
138 |
+
</div>
|
139 |
+
</div>
|
140 |
+
</div>
|
141 |
+
<!-- liquid-tag banners global -->
|
142 |
+
|
143 |
+
<!-- site header -->
|
144 |
+
<header id="ms--site-header" data-test-id="site-header-wrapper" role="banner" itemscope="itemscope" itemtype="http://schema.org/Organization">
|
145 |
+
<div id="ms--mobile-nav" class="site-header display-none-tablet padding-inline-none gap-none" data-bi-name="mobile-header" data-test-id="mobile-header"></div>
|
146 |
+
<div id="ms--primary-nav" class="site-header display-none display-flex-tablet" data-bi-name="L1-header" data-test-id="primary-header"></div>
|
147 |
+
<div id="ms--secondary-nav" class="site-header display-none display-flex-tablet" data-bi-name="L2-header" data-test-id="secondary-header"></div>
|
148 |
+
</header><div id="content-header" class="content-header uhf-container has-padding has-default-focus border-bottom-none" data-bi-name="content-header">
|
149 |
+
<div class="content-header-controls margin-xxs margin-inline-sm-tablet">
|
150 |
+
<button type="button" class="contents-button button button-sm margin-right-xxs" data-bi-name="contents-expand" aria-haspopup="true" data-contents-button>
|
151 |
+
<span class="icon"><span class="docon docon-menu" aria-hidden="true"></span></span>
|
152 |
+
<span class="contents-expand-title">Table of contents</span>
|
153 |
+
</button>
|
154 |
+
<button type="button" class="ap-collapse-behavior ap-expanded button button-sm" data-bi-name="ap-collapse" aria-controls="action-panel">
|
155 |
+
<span class="icon"><span class="docon docon-exit-mode" aria-hidden="true"></span></span>
|
156 |
+
<span>Exit focus mode</span>
|
157 |
+
</button>
|
158 |
+
</div>
|
159 |
+
</div><div id="disclaimer-holder" class="has-overflow-hidden has-default-focus">
|
160 |
+
<!-- liquid-tag banners sectional -->
|
161 |
+
</div>
|
162 |
+
</div>
|
163 |
+
|
164 |
+
<div class="mainContainer uhf-container has-default-focus" data-bi-name="body">
|
165 |
+
|
166 |
+
<div class="columns has-large-gaps is-gapless-mobile "><div id="left-container" class="left-container is-hidden-mobile column is-one-third-tablet is-one-quarter-desktop">
|
167 |
+
<nav id="affixed-left-container" class="margin-top-sm-tablet position-sticky display-flex flex-direction-column" aria-label="Primary"></nav>
|
168 |
+
</div><!-- .primary-holder -->
|
169 |
+
<section class="primary-holder column is-two-thirds-tablet is-three-quarters-desktop">
|
170 |
+
<!--div.columns -->
|
171 |
+
<div class="columns is-gapless-mobile has-large-gaps "><div id="main-column" class="column is-full is-8-desktop">
|
172 |
+
|
173 |
+
<main id="main" class="" role="main" data-bi-name="content" lang="en-us" dir="ltr"><!-- article-header -->
|
174 |
+
<div id="article-header" class="background-color-body margin-top-sm-tablet margin-bottom-xs display-none-print">
|
175 |
+
<div class="display-flex align-items-center "><details id="article-header-breadcrumbs-overflow-popover" class="popover" data-for="article-header-breadcrumbs">
|
176 |
+
<summary class="button button-clear button-primary button-sm inner-focus" aria-label="All breadcrumbs">
|
177 |
+
<span class="icon">
|
178 |
+
<span class="docon docon-more"></span>
|
179 |
+
</span>
|
180 |
+
</summary>
|
181 |
+
<div id="article-header-breadcrumbs-overflow" class="popover-content padding-none">
|
182 |
+
|
183 |
+
</div>
|
184 |
+
</details>
|
185 |
+
|
186 |
+
<bread-crumbs id="article-header-breadcrumbs" data-test-id="article-header-breadcrumbs" class="overflow-hidden flex-grow-1 margin-right-sm margin-right-md-tablet margin-right-lg-desktop margin-left-negative-xxs padding-left-xxs"></bread-crumbs><div id="article-header-page-actions" class="opacity-none margin-left-auto display-flex flex-wrap-no-wrap align-items-stretch"><a
|
187 |
+
id="lang-link-tablet"
|
188 |
+
class="button button-primary button-clear button-sm display-none display-inline-flex-tablet"
|
189 |
+
title="Read in English" data-bi-name="language-toggle"
|
190 |
+
data-read-in-link
|
191 |
+
hidden>
|
192 |
+
<span class="icon margin-none" aria-hidden="true" data-read-in-link-icon>
|
193 |
+
<span class="docon docon-locale-globe"></span>
|
194 |
+
</span>
|
195 |
+
<span class="is-visually-hidden" data-read-in-link-text>Read in English</span>
|
196 |
+
</a><button
|
197 |
+
type="button"
|
198 |
+
class="collection button button-clear button-sm button-primary display-none display-inline-flex-tablet"
|
199 |
+
data-list-type="collection"
|
200 |
+
data-bi-name="collection"
|
201 |
+
title="Add to collection">
|
202 |
+
<span class="icon margin-none" aria-hidden="true">
|
203 |
+
<span class="docon docon-circle-addition"></span>
|
204 |
+
</span>
|
205 |
+
<span class="collection-status is-visually-hidden">Save</span>
|
206 |
+
</button><a data-contenteditbtn
|
207 |
+
class="button button-clear button-sm text-decoration-none button-primary display-none display-inline-flex-tablet"
|
208 |
+
aria-label="Edit"
|
209 |
+
title="Edit This Document"
|
210 |
+
data-bi-name="edit"
|
211 |
+
href="https://github.com/MicrosoftDocs/azure-monitor-docs/blob/main/articles/azure-monitor/app/javascript-sdk.md"
|
212 |
+
data-original_content_git_url="https://github.com/MicrosoftDocs/azure-monitor-docs-pr/blob/live/articles/azure-monitor/app/javascript-sdk.md"
|
213 |
+
data-original_content_git_url_template="{repo}/blob/{branch}/articles/azure-monitor/app/javascript-sdk.md"
|
214 |
+
data-pr_repo=""
|
215 |
+
data-pr_branch="">
|
216 |
+
<span class="icon margin-none" aria-hidden="true">
|
217 |
+
<span class="docon docon-edit-outline"></span>
|
218 |
+
</span>
|
219 |
+
</a>
|
220 |
+
<details class="popover popover-right" id="article-header-page-actions-overflow">
|
221 |
+
<summary class="justify-content-flex-start button button-clear button-sm button-primary" aria-label="More actions" title="More actions">
|
222 |
+
<span class="icon" aria-hidden="true">
|
223 |
+
<span class="docon docon-more-vertical"></span>
|
224 |
+
</span>
|
225 |
+
</summary>
|
226 |
+
<div class="popover-content padding-xs"><button
|
227 |
+
data-page-action-item="overflow-mobile"
|
228 |
+
type="button"
|
229 |
+
class="justify-content-flex-start button-block button-sm has-inner-focus button button-clear display-none-tablet"
|
230 |
+
data-bi-name="contents-expand"
|
231 |
+
data-contents-button
|
232 |
+
data-popover-close>
|
233 |
+
<span class="icon">
|
234 |
+
<span class="docon docon-editor-list-bullet" aria-hidden="true"></span>
|
235 |
+
</span><span class="contents-expand-title">Table of contents</span></button><a
|
236 |
+
id="lang-link-overflow"
|
237 |
+
class="justify-content-flex-start button-sm has-inner-focus button button-clear button-block display-none-tablet"
|
238 |
+
title="Read in English" data-bi-name="language-toggle"
|
239 |
+
data-page-action-item="overflow-mobile"
|
240 |
+
data-check-hidden="true"
|
241 |
+
data-read-in-link
|
242 |
+
hidden
|
243 |
+
>
|
244 |
+
<span class="icon" aria-hidden="true" data-read-in-link-icon>
|
245 |
+
<span class="docon docon-locale-globe"></span>
|
246 |
+
</span>
|
247 |
+
<span data-read-in-link-text>Read in English</span>
|
248 |
+
</a><button
|
249 |
+
type="button"
|
250 |
+
class="collection justify-content-flex-start button button-clear button-sm has-inner-focus button-block display-none-tablet"
|
251 |
+
data-list-type="collection"
|
252 |
+
data-bi-name="collection"
|
253 |
+
title="Save"
|
254 |
+
data-page-action-item="overflow-mobile"
|
255 |
+
data-check-hidden="true"
|
256 |
+
data-popover-close>
|
257 |
+
<span class="icon" aria-hidden="true">
|
258 |
+
<span class="docon docon-circle-addition"></span>
|
259 |
+
</span>
|
260 |
+
<span class="collection-status">Save</span>
|
261 |
+
</button>
|
262 |
+
|
263 |
+
|
264 |
+
<button
|
265 |
+
type="button"
|
266 |
+
class="collection justify-content-flex-start button button-clear button-sm has-inner-focus button-block display-none-tablet"
|
267 |
+
data-list-type="plan"
|
268 |
+
data-bi-name="plan"
|
269 |
+
title="Add to Plan"
|
270 |
+
data-page-action-item="overflow-mobile"
|
271 |
+
data-check-hidden="true"
|
272 |
+
data-popover-close
|
273 |
+
hidden>
|
274 |
+
<span class="icon" aria-hidden="true">
|
275 |
+
<span class="docon docon-circle-addition"></span>
|
276 |
+
</span>
|
277 |
+
<span class="plan-status">Add to Plan</span>
|
278 |
+
</button><a data-contenteditbtn
|
279 |
+
class="button button-clear button-block button-sm has-inner-focus justify-content-flex-start text-decoration-none display-none-tablet"
|
280 |
+
aria-label="Edit"
|
281 |
+
title="Edit This Document"
|
282 |
+
data-bi-name="edit"
|
283 |
+
href="https://github.com/MicrosoftDocs/azure-monitor-docs/blob/main/articles/azure-monitor/app/javascript-sdk.md"
|
284 |
+
data-original_content_git_url="https://github.com/MicrosoftDocs/azure-monitor-docs-pr/blob/live/articles/azure-monitor/app/javascript-sdk.md"
|
285 |
+
data-original_content_git_url_template="{repo}/blob/{branch}/articles/azure-monitor/app/javascript-sdk.md"
|
286 |
+
data-pr_repo=""
|
287 |
+
data-pr_branch="">
|
288 |
+
<span class="icon" aria-hidden="true">
|
289 |
+
<span class="docon docon-edit-outline"></span>
|
290 |
+
</span>
|
291 |
+
<span>Edit</span>
|
292 |
+
</a><div aria-hidden="true" class="margin-none" data-page-action-item="overflow-all"></div>
|
293 |
+
<hr class="display-none-tablet margin-bottom-xxs margin-top-xxs" />
|
294 |
+
<h4 class="font-size-sm padding-left-xxs">Share via</h4>
|
295 |
+
|
296 |
+
<a class="button button-clear button-sm button-block has-inner-focus text-decoration-none justify-content-flex-start share-facebook" data-bi-name="facebook" data-page-action-item="overflow-all">
|
297 |
+
<span class="icon" aria-hidden="true">
|
298 |
+
<span class="docon docon-facebook-share font-size-md color-primary"></span>
|
299 |
+
</span>
|
300 |
+
<span class="margin-left-xxs">Facebook</span>
|
301 |
+
</a>
|
302 |
+
<a class="button button-clear button-sm has-inner-focus button-block text-decoration-none justify-content-flex-start share-twitter" data-bi-name="twitter" data-page-action-item="overflow-all">
|
303 |
+
<span class="icon" aria-hidden="true">
|
304 |
+
<span class="docon docon-xlogo-share font-size-xxs"></span>
|
305 |
+
</span>
|
306 |
+
<span class="margin-left-xxs">x.com</span>
|
307 |
+
</a>
|
308 |
+
<a class="button button-clear button-sm has-inner-focus button-block text-decoration-none justify-content-flex-start share-linkedin" data-bi-name="linkedin" data-page-action-item="overflow-all">
|
309 |
+
<span class="icon" aria-hidden="true">
|
310 |
+
<span class="docon docon-linked-in-logo font-size-sm color-primary"></span>
|
311 |
+
</span>
|
312 |
+
<span class="margin-left-xxs">LinkedIn</span>
|
313 |
+
</a>
|
314 |
+
<a class="button button-clear button-sm button-block has-inner-focus text-decoration-none justify-content-flex-start margin-bottom-xxs share-email" data-bi-name="email" data-page-action-item="overflow-all">
|
315 |
+
<span class="icon" aria-hidden="true">
|
316 |
+
<span class="docon docon-mail-message font-size-sm color-primary"></span>
|
317 |
+
</span>
|
318 |
+
<span class="margin-left-xxs">Email</span>
|
319 |
+
</a><hr />
|
320 |
+
<button
|
321 |
+
class="button button-block button-clear button-sm justify-content-flex-start has-inner-focus margin-top-xxs"
|
322 |
+
title="Print"
|
323 |
+
type="button"
|
324 |
+
aria-label="Print"
|
325 |
+
data-bi-name="print"
|
326 |
+
data-page-action-item="overflow-all"
|
327 |
+
data-popover-close
|
328 |
+
data-print-page
|
329 |
+
data-check-hidden="true">
|
330 |
+
<span class="icon" aria-hidden="true">
|
331 |
+
<span class="docon docon-print font-size-sm color-primary"></span>
|
332 |
+
</span>
|
333 |
+
<span class="margin-left-xxs">Print</span>
|
334 |
+
</button>
|
335 |
+
</div>
|
336 |
+
</details>
|
337 |
+
|
338 |
+
</div></div>
|
339 |
+
</div>
|
340 |
+
<!-- end article-header --><div>
|
341 |
+
<button type="button" class="border contents-button button button-clear button-sm is-hidden-tablet has-inner-focus" data-bi-name="contents-expand" data-contents-button hidden>
|
342 |
+
<span class="icon">
|
343 |
+
<span class="docon docon-editor-list-bullet" aria-hidden="true"></span>
|
344 |
+
</span><span class="contents-expand-title">Table of contents</span></button>
|
345 |
+
</div><!-- end mobile-contents button -->
|
346 |
+
|
347 |
+
<div class="content "><h1 id="enable-azure-monitor-application-insights-real-user-monitoring">Enable Azure Monitor Application Insights Real User Monitoring</h1><div class="display-flex justify-content-space-between align-items-center flex-wrap-wrap page-metadata-container">
|
348 |
+
<div class="margin-right-xxs">
|
349 |
+
<ul class="metadata page-metadata" data-bi-name="page info" lang="en-us" dir="ltr"><li>Article</li><li class="visibility-hidden-visual-diff"><time class="is-invisible" data-article-date aria-label="Article review date" datetime="2024-12-07T08:00:00Z" data-article-date-source="calculated">12/07/2024</time>
|
350 |
+
</li><li class="contributors-holder display-none-print">
|
351 |
+
<button aria-label="View all contributors" class="contributors-button link-button" data-bi-name="contributors" title="View all contributors">9 contributors</button>
|
352 |
+
</li></ul>
|
353 |
+
</div>
|
354 |
+
<div id="user-feedback" class="margin-block-xxs display-none-print" data-hide-on-archived>
|
355 |
+
<button
|
356 |
+
id="user-feedback-button"
|
357 |
+
data-test-id="conceptual-feedback-button"
|
358 |
+
class="button button-sm button-clear button-primary"
|
359 |
+
type="button"
|
360 |
+
data-bi-name="user-feedback-button"
|
361 |
+
data-user-feedback-button
|
362 |
+
>
|
363 |
+
<span class="icon" aria-hidden="true">
|
364 |
+
<span class="docon docon-like"></span>
|
365 |
+
</span>
|
366 |
+
<span>Feedback</span>
|
367 |
+
</button>
|
368 |
+
</div></div><nav id="center-doc-outline" class="doc-outline is-hidden-desktop display-none-print margin-bottom-sm" data-bi-name="intopic toc" aria-label="In this article">
|
369 |
+
<h2 id="ms--in-this-article" class="title is-6 margin-block-xs">In this article</h2>
|
370 |
+
</nav><!-- <content> --><p>The Microsoft Azure Monitor Application Insights JavaScript SDK collects usage data, which allows you to monitor and analyze the performance of JavaScript web applications. This is commonly referred to as Real User Monitoring or RUM.</p>
|
371 |
+
<p>The Application Insights JavaScript SDK has a base SDK and several plugins for more capabilities.</p>
|
372 |
+
<p><span class="mx-imgBorder">
|
373 |
+
<a href="media/javascript-sdk/conceptual-diagram-javascript-sdk.png#lightbox" data-linktype="relative-path">
|
374 |
+
<img src="media/javascript-sdk/conceptual-diagram-javascript-sdk.png" alt="Conceptual diagram that shows the Application Insights JavaScript SDK, its plugins/extensions, and their relationship to each other." data-linktype="relative-path">
|
375 |
+
</a>
|
376 |
+
</span>
|
377 |
+
</p>
|
378 |
+
<p>We collect page views by default. But if you want to also collect clicks by default, consider adding the <a href="javascript-feature-extensions" data-linktype="relative-path">Click Analytics Auto-Collection plug-in</a>:</p>
|
379 |
+
<ul>
|
380 |
+
<li>If you're adding a <a href="javascript-framework-extensions" data-linktype="relative-path">framework extension</a>, which you can <a href="#optional-add-advanced-sdk-configuration" data-linktype="self-bookmark">add</a> after you follow the steps to <a href="#get-started" data-linktype="self-bookmark">get started</a>, you can optionally add Click Analytics when you add the framework extension.</li>
|
381 |
+
<li>If you're not adding a framework extension, <a href="javascript-feature-extensions" data-linktype="relative-path">add the Click Analytics plug-in</a> after you follow the steps to get started.</li>
|
382 |
+
</ul>
|
383 |
+
<p>We provide the <a href="https://github.com/microsoft/ApplicationInsights-JS/blob/main/extensions/applicationinsights-debugplugin-js/README.md" data-linktype="external">Debug plugin</a> and <a href="https://github.com/microsoft/ApplicationInsights-JS/blob/main/extensions/applicationinsights-perfmarkmeasure-js/README.md" data-linktype="external">Performance plugin</a> for debugging/testing. In rare cases, it's possible to build your own extension by adding a <a href="https://github.com/microsoft/ApplicationInsights-JS/blob/e4be62c0aa9318b540157118b729bb0c4d8b6c6e/API-reference.md#custom-extension" data-linktype="external">custom plugin</a>.</p>
|
384 |
+
<h2 id="prerequisites">Prerequisites</h2>
|
385 |
+
<ul>
|
386 |
+
<li>Azure subscription: <a href="https://azure.microsoft.com/free/" data-linktype="external">Create an Azure subscription for free</a></li>
|
387 |
+
<li>Application Insights resource: <a href="create-workspace-resource#create-a-workspace-based-resource" data-linktype="relative-path">Create an Application Insights resource</a></li>
|
388 |
+
<li>An application that uses <a href="/en-us/visualstudio/javascript" data-linktype="absolute-path">JavaScript</a></li>
|
389 |
+
</ul>
|
390 |
+
<h2 id="get-started">Get started</h2>
|
391 |
+
<p>Follow the steps in this section to instrument your application with the Application Insights JavaScript SDK.</p>
|
392 |
+
<div class="TIP">
|
393 |
+
<p>Tip</p>
|
394 |
+
<p>Good news! We're making it even easier to enable JavaScript with JavaScript (Web) SDK Loader Script injection by configuration.</p>
|
395 |
+
<ul>
|
396 |
+
<li><a href="asp-net-core?tabs=netcorenew,netcore6#enable-client-side-telemetry-for-web-applications" data-linktype="relative-path">ASP.NET Core</a></li>
|
397 |
+
<li><a href="nodejs#browser-sdk-loader" data-linktype="relative-path">Node.js</a></li>
|
398 |
+
<li><a href="java-standalone-config#browser-sdk-loader-preview" data-linktype="relative-path">Java</a></li>
|
399 |
+
</ul>
|
400 |
+
</div>
|
401 |
+
<h3 id="add-the-javascript-code">Add the JavaScript code</h3>
|
402 |
+
<p>Two methods are available to add the code to enable Application Insights via the Application Insights JavaScript SDK:</p>
|
403 |
+
<table>
|
404 |
+
<thead>
|
405 |
+
<tr>
|
406 |
+
<th style="text-align: left;">Method</th>
|
407 |
+
<th style="text-align: left;">When would I use this method?</th>
|
408 |
+
</tr>
|
409 |
+
</thead>
|
410 |
+
<tbody>
|
411 |
+
<tr>
|
412 |
+
<td style="text-align: left;">JavaScript (Web) SDK Loader Script</td>
|
413 |
+
<td style="text-align: left;">For most customers, we recommend the JavaScript (Web) SDK Loader Script because you never have to update the SDK and you get the latest updates automatically. Also, you have control over which pages you add the Application Insights JavaScript SDK to.</td>
|
414 |
+
</tr>
|
415 |
+
<tr>
|
416 |
+
<td style="text-align: left;">npm package</td>
|
417 |
+
<td style="text-align: left;">You want to bring the SDK into your code and enable IntelliSense. This option is only needed for developers who require more custom events and configuration. This method is required if you plan to use the React, React Native, or Angular Framework Extension.</td>
|
418 |
+
</tr>
|
419 |
+
</tbody>
|
420 |
+
</table>
|
421 |
+
<div class="tabGroup" id="tabgroup_1">
|
422 |
+
<ul role="tablist">
|
423 |
+
<li role="presentation">
|
424 |
+
<a href="#tabpanel_1_javascriptwebsdkloaderscript" role="tab" aria-controls="tabpanel_1_javascriptwebsdkloaderscript" data-tab="javascriptwebsdkloaderscript" tabindex="0" aria-selected="true" data-linktype="self-bookmark">JavaScript (Web) SDK Loader Script</a>
|
425 |
+
</li>
|
426 |
+
<li role="presentation">
|
427 |
+
<a href="#tabpanel_1_npmpackage" role="tab" aria-controls="tabpanel_1_npmpackage" data-tab="npmpackage" tabindex="-1" data-linktype="self-bookmark">npm package</a>
|
428 |
+
</li>
|
429 |
+
</ul>
|
430 |
+
<section id="tabpanel_1_javascriptwebsdkloaderscript" role="tabpanel" data-tab="javascriptwebsdkloaderscript">
|
431 |
+
|
432 |
+
<ol>
|
433 |
+
<li><p>Paste the JavaScript (Web) SDK Loader Script at the top of each page for which you want to enable Application Insights.</p>
|
434 |
+
<p>Preferably, you should add it as the first script in your <code><head></code> section so that it can monitor any potential issues with all of your dependencies.</p>
|
435 |
+
<p>If Internet Explorer 8 is detected, JavaScript SDK v2.x is automatically loaded.</p>
|
436 |
+
<!-- IMPORTANT: If you're updating this code example, please remember to also update it in: 1) articles\azure-monitor\app\javascript-feature-extensions.md and 2) articles\azure-monitor\app\api-filtering-sampling.md -->
|
437 |
+
<pre><code class="lang-html"><script type="text/javascript">
|
438 |
+
!(function (cfg){function e(){cfg.onInit&&cfg.onInit(n)}var x,w,D,t,E,n,C=window,O=document,b=C.location,q="script",I="ingestionendpoint",L="disableExceptionTracking",j="ai.device.";"instrumentationKey"[x="toLowerCase"](),w="crossOrigin",D="POST",t="appInsightsSDK",E=cfg.name||"appInsights",(cfg.name||C[t])&&(C[t]=E),n=C[E]||function(g){var f=!1,m=!1,h={initialize:!0,queue:[],sv:"8",version:2,config:g};function v(e,t){var n={},i="Browser";function a(e){e=""+e;return 1===e.length?"0"+e:e}return n[j+"id"]=i[x](),n[j+"type"]=i,n["ai.operation.name"]=b&&b.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(h.sv||h.version),{time:(i=new Date).getUTCFullYear()+"-"+a(1+i.getUTCMonth())+"-"+a(i.getUTCDate())+"T"+a(i.getUTCHours())+":"+a(i.getUTCMinutes())+":"+a(i.getUTCSeconds())+"."+(i.getUTCMilliseconds()/1e3).toFixed(3).slice(2,5)+"Z",iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}},ver:undefined,seq:"1",aiDataContract:undefined}}var n,i,t,a,y=-1,T=0,S=["js.monitor.azure.com","js.cdn.applicationinsights.io","js.cdn.monitor.azure.com","js0.cdn.applicationinsights.io","js0.cdn.monitor.azure.com","js2.cdn.applicationinsights.io","js2.cdn.monitor.azure.com","az416426.vo.msecnd.net"],o=g.url||cfg.src,r=function(){return s(o,null)};function s(d,t){if((n=navigator)&&(~(n=(n.userAgent||"").toLowerCase()).indexOf("msie")||~n.indexOf("trident/"))&&~d.indexOf("ai.3")&&(d=d.replace(/(\/)(ai\.3\.)([^\d]*)$/,function(e,t,n){return t+"ai.2"+n})),!1!==cfg.cr)for(var e=0;e<S.length;e++)if(0<d.indexOf(S[e])){y=e;break}var n,i=function(e){var a,t,n,i,o,r,s,c,u,l;h.queue=[],m||(0<=y&&T+1<S.length?(a=(y+T+1)%S.length,p(d.replace(/^(.*\/\/)([\w\.]*)(\/.*)$/,function(e,t,n,i){return t+S[a]+i})),T+=1):(f=m=!0,s=d,!0!==cfg.dle&&(c=(t=function(){var e,t={},n=g.connectionString;if(n)for(var i=n.split(";"),a=0;a<i.length;a++){var o=i[a].split("=");2===o.length&&(t[o[0][x]()]=o[1])}return t[I]||(e=(n=t.endpointsuffix)?t.location:null,t[I]="https://"+(e?e+".":"")+"dc."+(n||"services.visualstudio.com")),t}()).instrumentationkey||g.instrumentationKey||"",t=(t=(t=t[I])&&"/"===t.slice(-1)?t.slice(0,-1):t)?t+"/v2/track":g.endpointUrl,t=g.userOverrideEndpointUrl||t,(n=[]).push((i="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",o=s,u=t,(l=(r=v(c,"Exception")).data).baseType="ExceptionData",l.baseData.exceptions=[{typeName:"SDKLoadFailed",message:i.replace(/\./g,"-"),hasFullStack:!1,stack:i+"\nSnippet failed to load ["+o+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(b&&b.pathname||"_unknown_")+"\nEndpoint: "+u,parsedStack:[]}],r)),n.push((l=s,i=t,(u=(o=v(c,"Message")).data).baseType="MessageData",(r=u.baseData).message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+l+")").replace(/\"/g,"")+'"',r.properties={endpoint:i},o)),s=n,c=t,JSON&&((u=C.fetch)&&!cfg.useXhr?u(c,{method:D,body:JSON.stringify(s),mode:"cors"}):XMLHttpRequest&&((l=new XMLHttpRequest).open(D,c),l.setRequestHeader("Content-type","application/json"),l.send(JSON.stringify(s)))))))},a=function(e,t){m||setTimeout(function(){!t&&h.core||i()},500),f=!1},p=function(e){var n=O.createElement(q),e=(n.src=e,t&&(n.integrity=t),n.setAttribute("data-ai-name",E),cfg[w]);return!e&&""!==e||"undefined"==n[w]||(n[w]=e),n.onload=a,n.onerror=i,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||a(0,t)},cfg.ld&&cfg.ld<0?O.getElementsByTagName("head")[0].appendChild(n):setTimeout(function(){O.getElementsByTagName(q)[0].parentNode.appendChild(n)},cfg.ld||0),n};p(d)}cfg.sri&&(n=o.match(/^((http[s]?:\/\/.*\/)\w+(\.\d+){1,5})\.(([\w]+\.){0,2}js)$/))&&6===n.length?(d="".concat(n[1],".integrity.json"),i="@".concat(n[4]),l=window.fetch,t=function(e){if(!e.ext||!e.ext[i]||!e.ext[i].file)throw Error("Error Loading JSON response");var t=e.ext[i].integrity||null;s(o=n[2]+e.ext[i].file,t)},l&&!cfg.useXhr?l(d,{method:"GET",mode:"cors"}).then(function(e){return e.json()["catch"](function(){return{}})}).then(t)["catch"](r):XMLHttpRequest&&((a=new XMLHttpRequest).open("GET",d),a.onreadystatechange=function(){if(a.readyState===XMLHttpRequest.DONE)if(200===a.status)try{t(JSON.parse(a.responseText))}catch(e){r()}else r()},a.send())):o&&r();try{h.cookie=O.cookie}catch(k){}function e(e){for(;e.length;)!function(t){h[t]=function(){var e=arguments;f||h.queue.push(function(){h[t].apply(h,e)})}}(e.pop())}var c,u,l="track",d="TrackPage",p="TrackEvent",l=(e([l+"Event",l+"PageView",l+"Exception",l+"Trace",l+"DependencyData",l+"Metric",l+"PageViewPerformance","start"+d,"stop"+d,"start"+p,"stop"+p,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),h.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4},(g.extensionConfig||{}).ApplicationInsightsAnalytics||{});return!0!==g[L]&&!0!==l[L]&&(e(["_"+(c="onerror")]),u=C[c],C[c]=function(e,t,n,i,a){var o=u&&u(e,t,n,i,a);return!0!==o&&h["_"+c]({message:e,url:t,lineNumber:n,columnNumber:i,error:a,evt:C.event}),o},g.autoExceptionInstrumented=!0),h}(cfg.cfg),(C[E]=n).queue&&0===n.queue.length?(n.queue.push(e),n.trackPageView({})):e();})({
|
439 |
+
src: "https://js.monitor.azure.com/scripts/b/ai.3.gbl.min.js",
|
440 |
+
// name: "appInsights", // Global SDK Instance name defaults to "appInsights" when not supplied
|
441 |
+
// ld: 0, // Defines the load delay (in ms) before attempting to load the sdk. -1 = block page load and add to head. (default) = 0ms load after timeout,
|
442 |
+
// useXhr: 1, // Use XHR instead of fetch to report failures (if available),
|
443 |
+
// dle: true, // Prevent the SDK from reporting load failure log
|
444 |
+
crossOrigin: "anonymous", // When supplied this will add the provided value as the cross origin attribute on the script tag
|
445 |
+
// onInit: null, // Once the application insights instance has loaded and initialized this callback function will be called with 1 argument -- the sdk instance (DON'T ADD anything to the sdk.queue -- As they won't get called)
|
446 |
+
// sri: false, // Custom optional value to specify whether fetching the snippet from integrity file and do integrity check
|
447 |
+
cfg: { // Application Insights Configuration
|
448 |
+
connectionString: "YOUR_CONNECTION_STRING"
|
449 |
+
}});
|
450 |
+
</script>
|
451 |
+
</code></pre>
|
452 |
+
</li>
|
453 |
+
<li><p>(Optional) Add or update optional <a href="#javascript-web-sdk-loader-script-configuration" data-linktype="self-bookmark">JavaScript (Web) SDK Loader Script configuration</a>, if you need to optimize the loading of your web page or resolve loading errors.</p>
|
454 |
+
<p><span class="mx-imgBorder">
|
455 |
+
<a href="media/javascript-sdk/sdk-loader-script-configuration.png#lightbox" data-linktype="relative-path">
|
456 |
+
<img src="media/javascript-sdk/sdk-loader-script-configuration.png" alt="Screenshot of the JavaScript (Web) SDK Loader Script. The parameters for configuring the JavaScript (Web) SDK Loader Script are highlighted." data-linktype="relative-path">
|
457 |
+
</a>
|
458 |
+
</span>
|
459 |
+
</p>
|
460 |
+
</li>
|
461 |
+
</ol>
|
462 |
+
<h4 id="javascript-web-sdk-loader-script-configuration">JavaScript (Web) SDK Loader Script configuration</h4>
|
463 |
+
<table>
|
464 |
+
<thead>
|
465 |
+
<tr>
|
466 |
+
<th>Name</th>
|
467 |
+
<th>Type</th>
|
468 |
+
<th>Required?</th>
|
469 |
+
<th>Description</th>
|
470 |
+
</tr>
|
471 |
+
</thead>
|
472 |
+
<tbody>
|
473 |
+
<tr>
|
474 |
+
<td>src</td>
|
475 |
+
<td>string</td>
|
476 |
+
<td>Required</td>
|
477 |
+
<td>The full URL for where to load the SDK from. This value is used for the "src" attribute of a dynamically added <script /> tag. You can use the public CDN location or your own privately hosted one.</td>
|
478 |
+
</tr>
|
479 |
+
<tr>
|
480 |
+
<td>name</td>
|
481 |
+
<td>string</td>
|
482 |
+
<td>Optional</td>
|
483 |
+
<td>The global name for the initialized SDK. Use this setting if you need to initialize two different SDKs at the same time.<br><br>The default value is appInsights, so <code>window.appInsights</code> is a reference to the initialized instance.<br><br> Note: If you assign a name value or if a previous instance is assigned to the global name appInsightsSDK, the SDK initialization code requires it to be in the global namespace as <code>window.appInsightsSDK=<name value></code> to ensure the correct JavaScript (Web) SDK Loader Script skeleton, and proxy methods are initialized and updated.</td>
|
484 |
+
</tr>
|
485 |
+
<tr>
|
486 |
+
<td>ld</td>
|
487 |
+
<td>number in ms</td>
|
488 |
+
<td>Optional</td>
|
489 |
+
<td>Defines the load delay to wait before attempting to load the SDK. Use this setting when the HTML page is failing to load because the JavaScript (Web) SDK Loader Script is loading at the wrong time.<br><br>The default value is 0ms after timeout. If you use a negative value, the script tag is immediately added to the <code><head></code> region of the page and blocks the page load event until the script is loaded or fails.</td>
|
490 |
+
</tr>
|
491 |
+
<tr>
|
492 |
+
<td>useXhr</td>
|
493 |
+
<td>boolean</td>
|
494 |
+
<td>Optional</td>
|
495 |
+
<td>This setting is used only for reporting SDK load failures. For example, this setting is useful when the JavaScript (Web) SDK Loader Script is preventing the HTML page from loading, causing fetch() to be unavailable.<br><br>Reporting first attempts to use fetch() if available and then fallback to XHR. Set this setting to <code>true</code> to bypass the fetch check. This setting is necessary only in environments where fetch can't transmit failure events, for example, when the JavaScript (Web) SDK Loader Script fails to load successfully.</td>
|
496 |
+
</tr>
|
497 |
+
<tr>
|
498 |
+
<td>crossOrigin</td>
|
499 |
+
<td>string</td>
|
500 |
+
<td>Optional</td>
|
501 |
+
<td>By including this setting, the script tag added to download the SDK includes the crossOrigin attribute with this string value. Use this setting when you need to provide support for CORS. When not defined (the default), no crossOrigin attribute is added. Recommended values aren't defined (the default), "", or "anonymous". For all valid values, see the <a href="https://developer.mozilla.org/docs/Web/HTML/Attributes/crossorigin" data-linktype="external">cross origin HTML attribute</a> documentation.</td>
|
502 |
+
</tr>
|
503 |
+
<tr>
|
504 |
+
<td>onInit</td>
|
505 |
+
<td>function(aiSdk) { ... }</td>
|
506 |
+
<td>Optional</td>
|
507 |
+
<td>This callback function is called after the main SDK script is successfully loaded and initialized from the CDN (based on the src value). This callback function is useful when you need to insert a telemetry initializer. It's passed one argument, which is a reference to the SDK instance that's being called for and is also called before the first initial page view. If the SDK is already loaded and initialized, this callback is still called. NOTE: During the processing of the sdk.queue array, this callback is called. You can't add any more items to the queue because they're ignored and dropped. (Added as part of JavaScript (Web) SDK Loader Script version 5--the sv:"5" value within the script).</td>
|
508 |
+
</tr>
|
509 |
+
<tr>
|
510 |
+
<td>cr</td>
|
511 |
+
<td>boolean</td>
|
512 |
+
<td>Optional</td>
|
513 |
+
<td>If the SDK fails to load and the endpoint value defined for <code>src</code> is the public CDN location, this configuration option attempts to immediately load the SDK from one of the following backup CDN endpoints:<ul><li>js.monitor.azure.com</li><li>js.cdn.applicationinsights.io</li><li>js.cdn.monitor.azure.com</li><li>js0.cdn.applicationinsights.io</li><li>js0.cdn.monitor.azure.com</li><li>js2.cdn.applicationinsights.io</li><li>js2.cdn.monitor.azure.com</li><li>az416426.vo.msecnd.net</li></ul>NOTE: az416426.vo.msecnd.net is partially supported, so it's not recommended.<br><br>If the SDK successfully loads from a backup CDN endpoint, it loads from the first available one, which is determined when the server performs a successful load check. If the SDK fails to load from any of the backup CDN endpoints, the SDK Failure error message appears.<br><br>When not defined, the default value is <code>true</code>. If you don’t want to load the SDK from the backup CDN endpoints, set this configuration option to <code>false</code>.<br><br>If you’re loading the SDK from your own privately hosted CDN endpoint, this configuration option isn't applicable.</td>
|
514 |
+
</tr>
|
515 |
+
</tbody>
|
516 |
+
</table>
|
517 |
+
</section>
|
518 |
+
<section id="tabpanel_1_npmpackage" role="tabpanel" data-tab="npmpackage" aria-hidden="true" hidden="hidden">
|
519 |
+
|
520 |
+
<ol>
|
521 |
+
<li><p>Use the following command to install the Microsoft Application Insights JavaScript SDK - Web package.</p>
|
522 |
+
<pre><code class="lang-sh">npm i --save @microsoft/applicationinsights-web
|
523 |
+
</code></pre>
|
524 |
+
<p><em>Typings are included with this package</em>, so you <em>don't</em> need to install a separate typings package.</p>
|
525 |
+
</li>
|
526 |
+
<li><p>Add the following JavaScript to your application's code.</p>
|
527 |
+
<p>Where and also how you add this JavaScript code depends on your application code. For example, you might be able to add it exactly as it appears below or you may need to create wrappers around it.</p>
|
528 |
+
<pre><code class="lang-js">import { ApplicationInsights } from '@microsoft/applicationinsights-web'
|
529 |
+
|
530 |
+
const appInsights = new ApplicationInsights({ config: {
|
531 |
+
connectionString: 'YOUR_CONNECTION_STRING'
|
532 |
+
/* ...Other Configuration Options... */
|
533 |
+
} });
|
534 |
+
appInsights.loadAppInsights();
|
535 |
+
appInsights.trackPageView();
|
536 |
+
</code></pre>
|
537 |
+
</li>
|
538 |
+
</ol>
|
539 |
+
</section>
|
540 |
+
</div>
|
541 |
+
<h3 id="paste-the-connection-string-in-your-environment">Paste the connection string in your environment</h3>
|
542 |
+
<p>To paste the connection string in your environment, follow these steps:</p>
|
543 |
+
<ol>
|
544 |
+
<li><p>Navigate to the <strong>Overview</strong> pane of your Application Insights resource.</p>
|
545 |
+
</li>
|
546 |
+
<li><p>Locate the <strong>Connection String</strong>.</p>
|
547 |
+
</li>
|
548 |
+
<li><p>Select the <strong>Copy to clipboard</strong> icon to copy the connection string to the clipboard.</p>
|
549 |
+
<p><span class="mx-imgBorder">
|
550 |
+
<a href="media/migrate-from-instrumentation-keys-to-connection-strings/migrate-from-instrumentation-keys-to-connection-strings.png#lightbox" data-linktype="relative-path">
|
551 |
+
<img src="media/migrate-from-instrumentation-keys-to-connection-strings/migrate-from-instrumentation-keys-to-connection-strings.png" alt="Screenshot that shows Application Insights overview and connection string." data-linktype="relative-path">
|
552 |
+
</a>
|
553 |
+
</span>
|
554 |
+
</p>
|
555 |
+
</li>
|
556 |
+
<li><p>Replace the placeholder <code>"YOUR_CONNECTION_STRING"</code> in the JavaScript code with your <a href="connection-strings" data-linktype="relative-path">connection string</a> copied to the clipboard.</p>
|
557 |
+
<p>The <code>connectionString</code> format must follow "InstrumentationKey=xxxx;....". If the string provided doesn't meet this format, the SDK load process fails.</p>
|
558 |
+
<p>The connection string isn't considered a security token or key. For more information, see <a href="connection-strings#do-new-azure-regions-require-the-use-of-connection-strings" data-linktype="relative-path">Do new Azure regions require the use of connection strings?</a>.</p>
|
559 |
+
<div class="NOTE">
|
560 |
+
<p>Note</p>
|
561 |
+
<p>The Application Insights JavaScript SDK requires the connection string to be passed in during initialization and configuration. It's viewable in plain text in client browsers. There's no easy way to use the <a href="azure-ad-authentication#microsoft-entra-authentication-for-application-insights" data-linktype="relative-path">Microsoft Entra ID-based authentication</a> for browser telemetry. We recommend that you consider creating a separate Application Insights resource for browser telemetry if you need to secure the service telemetry.</p>
|
562 |
+
</div>
|
563 |
+
</li>
|
564 |
+
</ol>
|
565 |
+
<h3 id="optional-add-sdk-configuration">(Optional) Add SDK configuration</h3>
|
566 |
+
<p>The optional <a href="javascript-sdk-configuration#sdk-configuration" data-linktype="relative-path">SDK configuration</a> is passed to the Application Insights JavaScript SDK during initialization.</p>
|
567 |
+
<p>To add SDK configuration, add each configuration option directly under <code>connectionString</code>. For example:</p>
|
568 |
+
<p><span class="mx-imgBorder">
|
569 |
+
<a href="media/javascript-sdk/example-sdk-configuration.png#lightbox" data-linktype="relative-path">
|
570 |
+
<img src="media/javascript-sdk/example-sdk-configuration.png" alt="Screenshot of JavaScript code with SDK configuration options added and highlighted." data-linktype="relative-path">
|
571 |
+
</a>
|
572 |
+
</span>
|
573 |
+
</p>
|
574 |
+
<h3 id="optional-add-advanced-sdk-configuration">(Optional) Add advanced SDK configuration</h3>
|
575 |
+
<p>If you want to use the extra features provided by plugins for specific frameworks and optionally enable the Click Analytics plug-in, see:</p>
|
576 |
+
<ul>
|
577 |
+
<li><a href="javascript-framework-extensions?tabs=react" data-linktype="relative-path">React plugin</a></li>
|
578 |
+
<li><a href="javascript-framework-extensions?tabs=reactnative" data-linktype="relative-path">React native plugin</a></li>
|
579 |
+
<li><a href="javascript-framework-extensions?tabs=angular" data-linktype="relative-path">Angular plugin</a></li>
|
580 |
+
</ul>
|
581 |
+
<h3 id="confirm-data-is-flowing">Confirm data is flowing</h3>
|
582 |
+
<ol>
|
583 |
+
<li><p>Go to your Application Insights resource that you enabled the SDK for.</p>
|
584 |
+
</li>
|
585 |
+
<li><p>In the Application Insights resource menu on the left, under <strong>Investigate</strong>, select the <strong>Transaction search</strong> pane.</p>
|
586 |
+
</li>
|
587 |
+
<li><p>Open the <strong>Event types</strong> dropdown menu and select <strong>Select all</strong> to clear the checkboxes in the menu.</p>
|
588 |
+
</li>
|
589 |
+
<li><p>From the <strong>Event types</strong> dropdown menu, select:</p>
|
590 |
+
<ul>
|
591 |
+
<li><strong>Page View</strong> for Azure Monitor Application Insights Real User Monitoring</li>
|
592 |
+
<li><strong>Custom Event</strong> for the Click Analytics Auto-Collection plug-in.</li>
|
593 |
+
</ul>
|
594 |
+
<p>It might take a few minutes for data to show up in the portal. If the only data you see showing up is a load failure exception, see <a href="/en-us/troubleshoot/azure/azure-monitor/app-insights/javascript-sdk-troubleshooting#troubleshoot-sdk-load-failure-for-javascript-web-apps" data-linktype="absolute-path">Troubleshoot SDK load failure for JavaScript web apps</a>.</p>
|
595 |
+
<p>In some cases, if multiple instances of different versions of Application Insights are running on the same page, errors can occur during initialization. For these cases and the error message that appears, see <a href="https://github.com/microsoft/ApplicationInsights-JS/blob/main/versionConflict.md" data-linktype="external">Running multiple versions of the Application Insights JavaScript SDK in one session</a>. If you encounter one of these errors, try changing the namespace by using the <code>name</code> setting. For more information, see <a href="#javascript-web-sdk-loader-script-configuration" data-linktype="self-bookmark">JavaScript (Web) SDK Loader Script configuration</a>.</p>
|
596 |
+
<p><span class="mx-imgBorder">
|
597 |
+
<a href="media/javascript-sdk/confirm-data-flowing.png#lightbox" data-linktype="relative-path">
|
598 |
+
<img src="media/javascript-sdk/confirm-data-flowing.png" alt="Screenshot of the Application Insights Transaction search pane in the Azure portal with the Page View option selected. The page views are highlighted." data-linktype="relative-path">
|
599 |
+
</a>
|
600 |
+
</span>
|
601 |
+
</p>
|
602 |
+
</li>
|
603 |
+
<li><p>If you want to query data to confirm data is flowing:</p>
|
604 |
+
<ol>
|
605 |
+
<li><p>Select <strong>Logs</strong> in the left pane.</p>
|
606 |
+
<p>When you select Logs, the <a href="../logs/queries#queries-dialog" data-linktype="relative-path">Queries dialog</a> opens, which contains sample queries relevant to your data.</p>
|
607 |
+
</li>
|
608 |
+
<li><p>Select <strong>Run</strong> for the sample query you want to run.</p>
|
609 |
+
</li>
|
610 |
+
<li><p>If needed, you can update the sample query or write a new query by using <a href="/en-us/azure/data-explorer/kusto/query/" data-linktype="absolute-path">Kusto Query Language (KQL)</a>.</p>
|
611 |
+
<p>For essential KQL operators, see <a href="/en-us/azure/data-explorer/kusto/query/tutorials/learn-common-operators" data-linktype="absolute-path">Learn common KQL operators</a>.</p>
|
612 |
+
</li>
|
613 |
+
</ol>
|
614 |
+
</li>
|
615 |
+
</ol>
|
616 |
+
<h2 id="frequently-asked-questions">Frequently asked questions</h2>
|
617 |
+
<p>This section provides answers to common questions.</p>
|
618 |
+
<h3 id="what-are-the-user-and-session-counts">What are the user and session counts?</h3>
|
619 |
+
<ul>
|
620 |
+
<li>The JavaScript SDK sets a user cookie on the web client, to identify returning users, and a session cookie to group activities.</li>
|
621 |
+
<li>If there's no client-side script, you can <a href="https://apmtips.com/posts/2016-07-09-tracking-users-in-api-apps/" data-linktype="external">set cookies at the server</a>.</li>
|
622 |
+
<li>If one real user uses your site in different browsers, or by using in-private/incognito browsing, or different machines, they're counted more than once.</li>
|
623 |
+
<li>To identify a signed-in user across machines and browsers, add a call to <a href="api-custom-events-metrics#authenticated-users" data-linktype="relative-path">setAuthenticatedUserContext()</a>.</li>
|
624 |
+
</ul>
|
625 |
+
<h3 id="what-is-the-javascript-sdk-performanceoverhead">What is the JavaScript SDK performance/overhead?</h3>
|
626 |
+
<p>The Application Insights JavaScript SDK has a minimal overhead on your website. At just 36 KB gzipped, and taking only ~15 ms to initialize, the SDK adds a negligible amount of load time to your website. The minimal components of the library are quickly loaded when you use the SDK, and the full script is downloaded in the background.</p>
|
627 |
+
<p>Additionally, while the script is downloading from the CDN, all tracking of your page is queued, so you don't lose any telemetry during the entire life cycle of your page. This setup process provides your page with a seamless analytics system that's invisible to your users.</p>
|
628 |
+
<h3 id="what-browsers-are-supported-by-the-javascript-sdk">What browsers are supported by the JavaScript SDK?</h3>
|
629 |
+
<table>
|
630 |
+
<thead>
|
631 |
+
<tr>
|
632 |
+
<th><span class="mx-imgBorder">
|
633 |
+
<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png" alt="Chrome" data-linktype="external">
|
634 |
+
</span>
|
635 |
+
</th>
|
636 |
+
<th><span class="mx-imgBorder">
|
637 |
+
<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png" alt="Firefox" data-linktype="external">
|
638 |
+
</span>
|
639 |
+
</th>
|
640 |
+
<th><span class="mx-imgBorder">
|
641 |
+
<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png" alt="IE" data-linktype="external">
|
642 |
+
</span>
|
643 |
+
</th>
|
644 |
+
<th><span class="mx-imgBorder">
|
645 |
+
<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/opera/opera_48x48.png" alt="Opera" data-linktype="external">
|
646 |
+
</span>
|
647 |
+
</th>
|
648 |
+
<th><span class="mx-imgBorder">
|
649 |
+
<img src="https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png" alt="Safari" data-linktype="external">
|
650 |
+
</span>
|
651 |
+
</th>
|
652 |
+
</tr>
|
653 |
+
</thead>
|
654 |
+
<tbody>
|
655 |
+
<tr>
|
656 |
+
<td>Chrome Latest ✔</td>
|
657 |
+
<td>Firefox Latest ✔</td>
|
658 |
+
<td>v3.x: IE 9+ & Microsoft Edge ✔<br>v2.x: IE 8+ Compatible & Microsoft Edge ✔</td>
|
659 |
+
<td>Opera Latest ✔</td>
|
660 |
+
<td>Safari Latest ✔</td>
|
661 |
+
</tr>
|
662 |
+
</tbody>
|
663 |
+
</table>
|
664 |
+
<h3 id="where-can-i-find-code-examples-for-the-javascript-sdk">Where can I find code examples for the JavaScript SDK?</h3>
|
665 |
+
<p>For runnable examples, see <a href="https://github.com/microsoft/ApplicationInsights-JS/tree/master/examples" data-linktype="external">Application Insights JavaScript SDK samples</a>.</p>
|
666 |
+
<h3 id="what-is-the-es3internet-explorer-8-compatibility-with-the-javascript-sdk">What is the ES3/Internet Explorer 8 compatibility with the JavaScript SDK?</h3>
|
667 |
+
<p>We need to take necessary measures to ensure that this SDK continues to "work" and doesn't break the JavaScript execution when loaded by an older browser. It would be ideal to not support older browsers, but numerous large customers can't control which browser their users choose to use.</p>
|
668 |
+
<p>This statement doesn't mean that we only support the lowest common set of features. We need to maintain ES3 code compatibility. New features need to be added in a manner that wouldn't break ES3 JavaScript parsing and added as an optional feature.</p>
|
669 |
+
<p>See GitHub for full details on <a href="https://github.com/Microsoft/ApplicationInsights-JS#es3ie8-compatibility" data-linktype="external">Internet Explorer 8 support</a>.</p>
|
670 |
+
<h3 id="is-the-javascript-sdk-open-source">Is the JavaScript SDK open-source?</h3>
|
671 |
+
<p>Yes, the Application Insights JavaScript SDK is open source. To view the source code or to contribute to the project, see the <a href="https://github.com/Microsoft/ApplicationInsights-JS" data-linktype="external">official GitHub repository</a>.</p>
|
672 |
+
<h2 id="support">Support</h2>
|
673 |
+
<ul>
|
674 |
+
<li>If you can't run the application or you aren't getting data as expected, see the dedicated <a href="/en-us/troubleshoot/azure/azure-monitor/app-insights/javascript-sdk-troubleshooting" data-linktype="absolute-path">troubleshooting article</a>.</li>
|
675 |
+
<li>For common question about the JavaScript SDK, see the <a href="#frequently-asked-questions" data-linktype="self-bookmark">FAQ</a>.</li>
|
676 |
+
<li>For Azure support issues, open an <a href="https://azure.microsoft.com/support/create-ticket/" data-linktype="external">Azure support ticket</a>.</li>
|
677 |
+
<li>For a list of open issues related to the Application Insights JavaScript SDK, see the <a href="https://github.com/microsoft/ApplicationInsights-JS/issues" data-linktype="external">GitHub Issues Page</a>.</li>
|
678 |
+
<li>Use the <a href="https://github.com/microsoft/ApplicationInsights-JS/tree/master/tools/chrome-debug-extension" data-linktype="external">Telemetry Viewer extension</a> to list out the individual events in the network payload and monitor the internal calls within Application Insights.</li>
|
679 |
+
</ul>
|
680 |
+
<h2 id="next-steps">Next steps</h2>
|
681 |
+
<ul>
|
682 |
+
<li><a href="usage" data-linktype="relative-path">Explore Application Insights usage experiences</a></li>
|
683 |
+
<li><a href="api-custom-events-metrics#page-views" data-linktype="relative-path">Track page views</a></li>
|
684 |
+
<li><a href="api-custom-events-metrics" data-linktype="relative-path">Track custom events and metrics</a></li>
|
685 |
+
<li><a href="api-filtering-sampling#javascript-telemetry-initializers" data-linktype="relative-path">Insert a JavaScript telemetry initializer</a></li>
|
686 |
+
<li><a href="javascript-sdk-configuration" data-linktype="relative-path">Add JavaScript SDK configuration</a></li>
|
687 |
+
<li>See the detailed <a href="https://github.com/microsoft/ApplicationInsights-JS/releases" data-linktype="external">release notes</a> on GitHub for updates and bug fixes.</li>
|
688 |
+
<li><a href="../logs/log-query-overview" data-linktype="relative-path">Query data in Log Analytics</a>.</li>
|
689 |
+
</ul>
|
690 |
+
</div><div id="ms--inline-notifications" class="margin-block-xs" data-bi-name="inline-notification"></div><div id="assertive-live-region" role="alert" aria-live="assertive" class="visually-hidden" aria-relevant="additions" aria-atomic="true"></div>
|
691 |
+
<div id="polite-live-region" role="status" aria-live="polite" class="visually-hidden" aria-relevant="additions" aria-atomic="true"></div>
|
692 |
+
<!-- </content> -->
|
693 |
+
|
694 |
+
</main><!-- recommendations section --><!-- end recommendations section -->
|
695 |
+
|
696 |
+
<!-- feedback section --><section id="site-user-feedback-footer" class="font-size-sm margin-top-md" data-test-id="site-user-feedback-footer" data-bi-name="site-feedback-section">
|
697 |
+
<hr class="hr" />
|
698 |
+
<h2 id="feedback" class="title is-3">Feedback</h2>
|
699 |
+
<div class="display-flex flex-wrap-wrap align-items-center">
|
700 |
+
<p class="font-weight-semibold margin-xxs margin-left-none">Was this page helpful?</p>
|
701 |
+
<div class="buttons">
|
702 |
+
<button
|
703 |
+
class="thumb-rating-button like button button-primary button-sm"
|
704 |
+
data-test-id="footer-rating-yes"
|
705 |
+
data-binary-rating-response="rating-yes"
|
706 |
+
type="button"
|
707 |
+
title="This article is helpful"
|
708 |
+
data-bi-name="button-rating-yes"
|
709 |
+
aria-pressed="false"
|
710 |
+
>
|
711 |
+
<span class="icon" aria-hidden="true">
|
712 |
+
<span class="docon docon-like"></span>
|
713 |
+
</span>
|
714 |
+
<span>Yes</span>
|
715 |
+
</button>
|
716 |
+
<button
|
717 |
+
class="thumb-rating-button dislike button button-primary button-sm"
|
718 |
+
data-test-id="footer-rating-no"
|
719 |
+
data-binary-rating-response="rating-no"
|
720 |
+
type="button"
|
721 |
+
title="This article is not helpful"
|
722 |
+
data-bi-name="button-rating-no"
|
723 |
+
aria-pressed="false"
|
724 |
+
>
|
725 |
+
<span class="icon" aria-hidden="true">
|
726 |
+
<span class="docon docon-dislike"></span>
|
727 |
+
</span>
|
728 |
+
<span>No</span>
|
729 |
+
</button>
|
730 |
+
</div>
|
731 |
+
</div><div class="display-flex flex-wrap-wrap margin-top-xxs"><div>
|
732 |
+
<a
|
733 |
+
data-bi-name="provide-feedback-cta"
|
734 |
+
class="has-external-link-indicator"
|
735 |
+
href="https://feedback.azure.com/d365community/forum/3887dc70-2025-ec11-b6e6-000d3a4f09d0"
|
736 |
+
data-bi-name="product-feedback"
|
737 |
+
>
|
738 |
+
<span>Provide product feedback</span>
|
739 |
+
</a><span class="margin-inline-xxs" aria-hidden="true">|</span></div><a href="https://learn.microsoft.com/answers/tags/20/azure-monitor/" class="has-external-link-indicator" data-bi-name="get-help-at-qna">
|
740 |
+
<span>Get help at Microsoft Q&A</span>
|
741 |
+
</a></div>
|
742 |
+
|
743 |
+
</section><!-- end feedback section -->
|
744 |
+
|
745 |
+
<!-- feedback report section --><!-- end feedback report section --><aside
|
746 |
+
id="ms--additional-resources-mobile"
|
747 |
+
aria-label="Additional resources"
|
748 |
+
class="display-none-desktop display-none-print"
|
749 |
+
>
|
750 |
+
<hr class="hr" hidden />
|
751 |
+
<h2 id="ms--additional-resources-mobile-heading" class="title is-3" hidden>Additional resources</h2>
|
752 |
+
<section id="right-rail-recommendations-mobile" data-bi-name="recommendations" hidden></section>
|
753 |
+
<section id="right-rail-training-mobile" data-bi-name="learning-resources-card" hidden></section>
|
754 |
+
<section id="right-rail-events-mobile" data-bi-name="events-card" hidden></section>
|
755 |
+
<section id="right-rail-qna-mobile" data-bi-name="qna-link-card" hidden></section>
|
756 |
+
</aside><div class="border-top is-visible-interactive has-default-focus margin-top-sm "><footer id="footer-interactive" data-bi-name="footer" class="footer-layout"><div class="display-flex gap-xs flex-wrap-wrap is-full-height padding-right-lg-desktop"><a
|
757 |
+
data-mscc-ic="false"
|
758 |
+
class="locale-selector-link button button-sm button-clear flex-shrink-0"
|
759 |
+
href="#"
|
760 |
+
data-bi-name="select-locale">
|
761 |
+
<span class="icon" aria-hidden="true">
|
762 |
+
<span class="docon docon-world"></span>
|
763 |
+
</span>
|
764 |
+
<span class="local-selector-link-text"></span></a><div class="ccpa-privacy-link" data-ccpa-privacy-link hidden>
|
765 |
+
<a
|
766 |
+
href="https://aka.ms/yourcaliforniaprivacychoices"
|
767 |
+
class="button button-sm button-clear flex-shrink-0"
|
768 |
+
data-mscc-ic="false"
|
769 |
+
data-bi-name="your-privacy-choices"
|
770 |
+
>
|
771 |
+
<svg
|
772 |
+
role="img"
|
773 |
+
aria-label="California Consumer Privacy Act (CCPA) Opt-Out Icon"
|
774 |
+
xmlns="http://www.w3.org/2000/svg"
|
775 |
+
viewBox="0 0 30 14"
|
776 |
+
xml:space="preserve"
|
777 |
+
height="16"
|
778 |
+
width="43"
|
779 |
+
focusable="false"
|
780 |
+
>
|
781 |
+
<title>California Consumer Privacy Act (CCPA) Opt-Out Icon</title>
|
782 |
+
<path d="M7.4 12.8h6.8l3.1-11.6H7.4C4.2 1.2 1.6 3.8 1.6 7s2.6 5.8 5.8 5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#fff"></path>
|
783 |
+
<path d="M22.6 0H7.4c-3.9 0-7 3.1-7 7s3.1 7 7 7h15.2c3.9 0 7-3.1 7-7s-3.2-7-7-7zm-21 7c0-3.2 2.6-5.8 5.8-5.8h9.9l-3.1 11.6H7.4c-3.2 0-5.8-2.6-5.8-5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#06f"></path>
|
784 |
+
<path d="M24.6 4c.2.2.2.6 0 .8L22.5 7l2.2 2.2c.2.2.2.6 0 .8-.2.2-.6.2-.8 0l-2.2-2.2-2.2 2.2c-.2.2-.6.2-.8 0-.2-.2-.2-.6 0-.8L20.8 7l-2.2-2.2c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0l2.2 2.2L23.8 4c.2-.2.6-.2.8 0z" style="fill:#fff"></path>
|
785 |
+
<path d="M12.7 4.1c.2.2.3.6.1.8L8.6 9.8c-.1.1-.2.2-.3.2-.2.1-.5.1-.7-.1L5.4 7.7c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0L8 8.6l3.8-4.5c.2-.2.6-.2.9 0z" style="fill:#06f"></path>
|
786 |
+
</svg>
|
787 |
+
<span>Your Privacy Choices</span>
|
788 |
+
</a>
|
789 |
+
|
790 |
+
</div>
|
791 |
+
<div class="flex-shrink-0">
|
792 |
+
<div class="dropdown has-caret-up">
|
793 |
+
<button class="dropdown-trigger button button-clear button-sm has-inner-focus theme-dropdown-trigger"
|
794 |
+
aria-controls="theme-menu-interactive" aria-expanded="false" title="Theme" data-bi-name="theme">
|
795 |
+
<span class="icon">
|
796 |
+
<span class="docon docon-sun" aria-hidden="true"></span>
|
797 |
+
</span>
|
798 |
+
<span>Theme</span>
|
799 |
+
<span class="icon expanded-indicator" aria-hidden="true">
|
800 |
+
<span class="docon docon-chevron-down-light"></span>
|
801 |
+
</span>
|
802 |
+
</button>
|
803 |
+
<div class="dropdown-menu" id="theme-menu-interactive" role="menu">
|
804 |
+
<ul class="theme-selector padding-xxs" role="none">
|
805 |
+
<li class="theme display-block" role="menuitem">
|
806 |
+
<button class="button button-clear button-sm theme-control button-block justify-content-flex-start"
|
807 |
+
data-theme-to="light">
|
808 |
+
<span class="theme-light margin-right-xxs">
|
809 |
+
<span
|
810 |
+
class="theme-selector-icon border display-inline-block has-body-background"
|
811 |
+
aria-hidden="true">
|
812 |
+
<svg class="svg" xmlns="http://www.w3.org/2000/svg"
|
813 |
+
viewBox="0 0 22 14">
|
814 |
+
<rect width="22" height="14" class="has-fill-body-background" />
|
815 |
+
<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
|
816 |
+
<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
|
817 |
+
<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
|
818 |
+
<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
|
819 |
+
<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
|
820 |
+
<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
|
821 |
+
<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
|
822 |
+
</svg>
|
823 |
+
</span>
|
824 |
+
</span>
|
825 |
+
<span>Light</span>
|
826 |
+
</button>
|
827 |
+
</li>
|
828 |
+
<li class="theme display-block" role="menuitem">
|
829 |
+
<button class="button button-clear button-sm theme-control button-block justify-content-flex-start"
|
830 |
+
data-theme-to="dark">
|
831 |
+
<span class="theme-dark margin-right-xxs">
|
832 |
+
<span
|
833 |
+
class="border theme-selector-icon display-inline-block has-body-background"
|
834 |
+
aria-hidden="true">
|
835 |
+
<svg class="svg" xmlns="http://www.w3.org/2000/svg"
|
836 |
+
viewBox="0 0 22 14">
|
837 |
+
<rect width="22" height="14" class="has-fill-body-background" />
|
838 |
+
<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
|
839 |
+
<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
|
840 |
+
<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
|
841 |
+
<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
|
842 |
+
<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
|
843 |
+
<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
|
844 |
+
<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
|
845 |
+
</svg>
|
846 |
+
</span>
|
847 |
+
</span>
|
848 |
+
<span>Dark</span>
|
849 |
+
</button>
|
850 |
+
</li>
|
851 |
+
<li class="theme display-block" role="menuitem">
|
852 |
+
<button class="button button-clear button-sm theme-control button-block justify-content-flex-start"
|
853 |
+
data-theme-to="high-contrast">
|
854 |
+
<span class="theme-high-contrast margin-right-xxs">
|
855 |
+
<span
|
856 |
+
class="border theme-selector-icon display-inline-block has-body-background"
|
857 |
+
aria-hidden="true">
|
858 |
+
<svg class="svg" xmlns="http://www.w3.org/2000/svg"
|
859 |
+
viewBox="0 0 22 14">
|
860 |
+
<rect width="22" height="14" class="has-fill-body-background" />
|
861 |
+
<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
|
862 |
+
<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
|
863 |
+
<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
|
864 |
+
<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
|
865 |
+
<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
|
866 |
+
<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
|
867 |
+
<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
|
868 |
+
</svg>
|
869 |
+
</span>
|
870 |
+
</span>
|
871 |
+
<span>High contrast</span>
|
872 |
+
</button>
|
873 |
+
</li>
|
874 |
+
</ul>
|
875 |
+
</div>
|
876 |
+
</div>
|
877 |
+
|
878 |
+
</div>
|
879 |
+
</div>
|
880 |
+
<ul class="links" data-bi-name="footerlinks">
|
881 |
+
<li class="manage-cookies-holder" hidden></li><li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/previous-versions/" data-bi-name="archivelink">Previous Versions</a></li>
|
882 |
+
<li><a class="external-link-indicator" data-mscc-ic="false" href="https://techcommunity.microsoft.com/t5/microsoft-learn-blog/bg-p/MicrosoftLearnBlog" data-bi-name="bloglink">Blog</a></li>
|
883 |
+
<li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/contribute/" data-bi-name="contributorGuide">Contribute</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="https://go.microsoft.com/fwlink/?LinkId=521839" data-bi-name="privacy">Privacy</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/legal/termsofuse" data-bi-name="termsofuse">Terms of Use</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="https://www.microsoft.com/legal/intellectualproperty/Trademarks/" data-bi-name="trademarks">Trademarks</a></li><li>© Microsoft 2024</li>
|
884 |
+
</ul>
|
885 |
+
</footer></div></div><div
|
886 |
+
id="ms--additional-resources"
|
887 |
+
class="right-container column is-4-desktop display-none display-block-desktop"
|
888 |
+
data-bi-name="pageactions"
|
889 |
+
role="complementary"
|
890 |
+
aria-label="Additional resources"
|
891 |
+
>
|
892 |
+
<div id="affixed-right-container" class="margin-top-sm-tablet" data-bi-name="right-column">
|
893 |
+
<h2 id="ms--additional-resources-heading" class="title is-6 margin-top-md" hidden>Additional resources</h2>
|
894 |
+
<section id="right-rail-events" data-bi-name="events-card" hidden></section>
|
895 |
+
<section id="right-rail-training" data-bi-name="learning-resources-card" hidden></section>
|
896 |
+
<section id="right-rail-recommendations" data-bi-name="recommendations" hidden></section>
|
897 |
+
<nav id="side-doc-outline" class="doc-outline" data-bi-name="intopic toc" aria-label="In this article">
|
898 |
+
<h3>In this article</h3>
|
899 |
+
</nav>
|
900 |
+
<section id="right-rail-qna" class="margin-top-xxs" data-bi-name="qna-link-card" hidden></section>
|
901 |
+
</div>
|
902 |
+
</div></div>
|
903 |
+
<!--end of div.columns -->
|
904 |
+
|
905 |
+
</section>
|
906 |
+
<!--end of .primary-holder -->
|
907 |
+
|
908 |
+
<!-- interactive container -->
|
909 |
+
<aside id="interactive-container" class="interactive-container is-visible-interactive column has-body-background-dark ">
|
910 |
+
</aside>
|
911 |
+
<!-- end of interactive container -->
|
912 |
+
</div>
|
913 |
+
|
914 |
+
</div>
|
915 |
+
<!--end of .mainContainer -->
|
916 |
+
|
917 |
+
<section class="border-top has-default-focus is-hidden-interactive margin-top-sm "><footer id="footer" data-bi-name="footer" class="footer-layout uhf-container has-padding" role="contentinfo"><div class="display-flex gap-xs flex-wrap-wrap is-full-height padding-right-lg-desktop"><a
|
918 |
+
data-mscc-ic="false"
|
919 |
+
class="locale-selector-link button button-sm button-clear flex-shrink-0"
|
920 |
+
href="#"
|
921 |
+
data-bi-name="select-locale">
|
922 |
+
<span class="icon" aria-hidden="true">
|
923 |
+
<span class="docon docon-world"></span>
|
924 |
+
</span>
|
925 |
+
<span class="local-selector-link-text"></span></a><div class="ccpa-privacy-link" data-ccpa-privacy-link hidden>
|
926 |
+
<a
|
927 |
+
href="https://aka.ms/yourcaliforniaprivacychoices"
|
928 |
+
class="button button-sm button-clear flex-shrink-0"
|
929 |
+
data-mscc-ic="false"
|
930 |
+
data-bi-name="your-privacy-choices"
|
931 |
+
>
|
932 |
+
<svg
|
933 |
+
role="img"
|
934 |
+
aria-label="California Consumer Privacy Act (CCPA) Opt-Out Icon"
|
935 |
+
xmlns="http://www.w3.org/2000/svg"
|
936 |
+
viewBox="0 0 30 14"
|
937 |
+
xml:space="preserve"
|
938 |
+
height="16"
|
939 |
+
width="43"
|
940 |
+
focusable="false"
|
941 |
+
>
|
942 |
+
<title>California Consumer Privacy Act (CCPA) Opt-Out Icon</title>
|
943 |
+
<path d="M7.4 12.8h6.8l3.1-11.6H7.4C4.2 1.2 1.6 3.8 1.6 7s2.6 5.8 5.8 5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#fff"></path>
|
944 |
+
<path d="M22.6 0H7.4c-3.9 0-7 3.1-7 7s3.1 7 7 7h15.2c3.9 0 7-3.1 7-7s-3.2-7-7-7zm-21 7c0-3.2 2.6-5.8 5.8-5.8h9.9l-3.1 11.6H7.4c-3.2 0-5.8-2.6-5.8-5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#06f"></path>
|
945 |
+
<path d="M24.6 4c.2.2.2.6 0 .8L22.5 7l2.2 2.2c.2.2.2.6 0 .8-.2.2-.6.2-.8 0l-2.2-2.2-2.2 2.2c-.2.2-.6.2-.8 0-.2-.2-.2-.6 0-.8L20.8 7l-2.2-2.2c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0l2.2 2.2L23.8 4c.2-.2.6-.2.8 0z" style="fill:#fff"></path>
|
946 |
+
<path d="M12.7 4.1c.2.2.3.6.1.8L8.6 9.8c-.1.1-.2.2-.3.2-.2.1-.5.1-.7-.1L5.4 7.7c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0L8 8.6l3.8-4.5c.2-.2.6-.2.9 0z" style="fill:#06f"></path>
|
947 |
+
</svg>
|
948 |
+
<span>Your Privacy Choices</span>
|
949 |
+
</a>
|
950 |
+
|
951 |
+
</div>
|
952 |
+
<div class="flex-shrink-0">
|
953 |
+
<div class="dropdown has-caret-up">
|
954 |
+
<button class="dropdown-trigger button button-clear button-sm has-inner-focus theme-dropdown-trigger"
|
955 |
+
aria-controls="theme-menu" aria-expanded="false" title="Theme" data-bi-name="theme">
|
956 |
+
<span class="icon">
|
957 |
+
<span class="docon docon-sun" aria-hidden="true"></span>
|
958 |
+
</span>
|
959 |
+
<span>Theme</span>
|
960 |
+
<span class="icon expanded-indicator" aria-hidden="true">
|
961 |
+
<span class="docon docon-chevron-down-light"></span>
|
962 |
+
</span>
|
963 |
+
</button>
|
964 |
+
<div class="dropdown-menu" id="theme-menu" role="menu">
|
965 |
+
<ul class="theme-selector padding-xxs" role="none">
|
966 |
+
<li class="theme display-block" role="menuitem">
|
967 |
+
<button class="button button-clear button-sm theme-control button-block justify-content-flex-start"
|
968 |
+
data-theme-to="light">
|
969 |
+
<span class="theme-light margin-right-xxs">
|
970 |
+
<span
|
971 |
+
class="theme-selector-icon border display-inline-block has-body-background"
|
972 |
+
aria-hidden="true">
|
973 |
+
<svg class="svg" xmlns="http://www.w3.org/2000/svg"
|
974 |
+
viewBox="0 0 22 14">
|
975 |
+
<rect width="22" height="14" class="has-fill-body-background" />
|
976 |
+
<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
|
977 |
+
<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
|
978 |
+
<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
|
979 |
+
<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
|
980 |
+
<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
|
981 |
+
<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
|
982 |
+
<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
|
983 |
+
</svg>
|
984 |
+
</span>
|
985 |
+
</span>
|
986 |
+
<span>Light</span>
|
987 |
+
</button>
|
988 |
+
</li>
|
989 |
+
<li class="theme display-block" role="menuitem">
|
990 |
+
<button class="button button-clear button-sm theme-control button-block justify-content-flex-start"
|
991 |
+
data-theme-to="dark">
|
992 |
+
<span class="theme-dark margin-right-xxs">
|
993 |
+
<span
|
994 |
+
class="border theme-selector-icon display-inline-block has-body-background"
|
995 |
+
aria-hidden="true">
|
996 |
+
<svg class="svg" xmlns="http://www.w3.org/2000/svg"
|
997 |
+
viewBox="0 0 22 14">
|
998 |
+
<rect width="22" height="14" class="has-fill-body-background" />
|
999 |
+
<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
|
1000 |
+
<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
|
1001 |
+
<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
|
1002 |
+
<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
|
1003 |
+
<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
|
1004 |
+
<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
|
1005 |
+
<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
|
1006 |
+
</svg>
|
1007 |
+
</span>
|
1008 |
+
</span>
|
1009 |
+
<span>Dark</span>
|
1010 |
+
</button>
|
1011 |
+
</li>
|
1012 |
+
<li class="theme display-block" role="menuitem">
|
1013 |
+
<button class="button button-clear button-sm theme-control button-block justify-content-flex-start"
|
1014 |
+
data-theme-to="high-contrast">
|
1015 |
+
<span class="theme-high-contrast margin-right-xxs">
|
1016 |
+
<span
|
1017 |
+
class="border theme-selector-icon display-inline-block has-body-background"
|
1018 |
+
aria-hidden="true">
|
1019 |
+
<svg class="svg" xmlns="http://www.w3.org/2000/svg"
|
1020 |
+
viewBox="0 0 22 14">
|
1021 |
+
<rect width="22" height="14" class="has-fill-body-background" />
|
1022 |
+
<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
|
1023 |
+
<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
|
1024 |
+
<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
|
1025 |
+
<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
|
1026 |
+
<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
|
1027 |
+
<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
|
1028 |
+
<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
|
1029 |
+
</svg>
|
1030 |
+
</span>
|
1031 |
+
</span>
|
1032 |
+
<span>High contrast</span>
|
1033 |
+
</button>
|
1034 |
+
</li>
|
1035 |
+
</ul>
|
1036 |
+
</div>
|
1037 |
+
</div>
|
1038 |
+
|
1039 |
+
</div>
|
1040 |
+
</div>
|
1041 |
+
<ul class="links" data-bi-name="footerlinks">
|
1042 |
+
<li class="manage-cookies-holder" hidden></li><li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/previous-versions/" data-bi-name="archivelink">Previous Versions</a></li>
|
1043 |
+
<li><a class="external-link-indicator" data-mscc-ic="false" href="https://techcommunity.microsoft.com/t5/microsoft-learn-blog/bg-p/MicrosoftLearnBlog" data-bi-name="bloglink">Blog</a></li>
|
1044 |
+
<li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/contribute/" data-bi-name="contributorGuide">Contribute</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="https://go.microsoft.com/fwlink/?LinkId=521839" data-bi-name="privacy">Privacy</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/legal/termsofuse" data-bi-name="termsofuse">Terms of Use</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="https://www.microsoft.com/legal/intellectualproperty/Trademarks/" data-bi-name="trademarks">Trademarks</a></li><li>© Microsoft 2024</li>
|
1045 |
+
</ul>
|
1046 |
+
</footer>
|
1047 |
+
|
1048 |
+
</section>
|
1049 |
+
|
1050 |
+
<div id="action-panel" role="region" aria-label="Action Panel" class="action-panel has-default-focus" tabindex="-1"></div>
|
1051 |
+
</body>
|
1052 |
+
</html>
|
main.py
ADDED
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import os
|
2 |
+
import logging
|
3 |
+
from aiohttp import web
|
4 |
+
from botbuilder.core import (
|
5 |
+
BotFrameworkAdapterSettings,
|
6 |
+
ConversationState,
|
7 |
+
MemoryStorage,
|
8 |
+
UserState,
|
9 |
+
)
|
10 |
+
from botbuilder.integration.aiohttp import BotFrameworkHttpAdapter
|
11 |
+
from botbuilder.schema import Activity
|
12 |
+
from dotenv import load_dotenv
|
13 |
+
from utils import show_privacy_consent
|
14 |
+
from universal_reasoning import UniversalReasoning, load_json_config
|
15 |
+
from mybot import MyBot # Import updated MyBot class
|
16 |
+
from main_dialog import MainDialog
|
17 |
+
|
18 |
+
# Load environment variables from .env file
|
19 |
+
load_dotenv()
|
20 |
+
|
21 |
+
# Configure logging
|
22 |
+
logging.basicConfig(
|
23 |
+
level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s"
|
24 |
+
)
|
25 |
+
|
26 |
+
# Show privacy consent dialog and check user response
|
27 |
+
if not show_privacy_consent():
|
28 |
+
logging.info("User declined data collection and privacy policy. Exiting application.")
|
29 |
+
exit()
|
30 |
+
|
31 |
+
# Load configuration
|
32 |
+
config = load_json_config("config.json")
|
33 |
+
config["azure_openai_api_key"] = os.getenv("AZURE_OPENAI_API_KEY")
|
34 |
+
config["azure_openai_endpoint"] = os.getenv("AZURE_OPENAI_ENDPOINT")
|
35 |
+
|
36 |
+
# Initialize UniversalReasoning
|
37 |
+
universal_reasoning = UniversalReasoning(config)
|
38 |
+
|
39 |
+
# Create adapter
|
40 |
+
settings = BotFrameworkAdapterSettings(
|
41 |
+
app_id=os.getenv("MICROSOFT_APP_ID"),
|
42 |
+
app_password=os.getenv("MICROSOFT_APP_PASSWORD"),
|
43 |
+
)
|
44 |
+
adapter = BotFrameworkHttpAdapter(settings)
|
45 |
+
|
46 |
+
# Create MemoryStorage, ConversationState, and UserState
|
47 |
+
memory_storage = MemoryStorage()
|
48 |
+
conversation_state = ConversationState(memory_storage)
|
49 |
+
user_state = UserState(memory_storage)
|
50 |
+
|
51 |
+
# Create the main dialog
|
52 |
+
main_dialog = MainDialog("MainDialog")
|
53 |
+
|
54 |
+
# Create the bot and pass the universal_reasoning instance
|
55 |
+
bot = MyBot(conversation_state, user_state, main_dialog, universal_reasoning)
|
56 |
+
|
57 |
+
# Listen for incoming requests on /api/messages
|
58 |
+
async def messages(req):
|
59 |
+
body = await req.json()
|
60 |
+
activity = Activity().deserialize(body)
|
61 |
+
auth_header = req.headers.get("Authorization", "")
|
62 |
+
|
63 |
+
response = await adapter.process_activity(activity, auth_header, bot.on_turn)
|
64 |
+
return web.Response(status=response.status)
|
65 |
+
|
66 |
+
app = web.Application()
|
67 |
+
app.router.add_post("/api/messages", messages)
|
68 |
+
|
69 |
+
if __name__ == "__main__":
|
70 |
+
web.run_app(app, host="localhost", port=3978)
|
main_dialog.py
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from botbuilder.dialogs import ComponentDialog, WaterfallDialog, WaterfallStepContext
|
2 |
+
from botbuilder.dialogs.prompts import TextPrompt, PromptOptions
|
3 |
+
from botbuilder.core import MessageFactory
|
4 |
+
|
5 |
+
class MainDialog(ComponentDialog):
|
6 |
+
def __init__(self, dialog_id: str = "MainDialog"):
|
7 |
+
super(MainDialog, self).__init__(dialog_id or MainDialog.__name__)
|
8 |
+
|
9 |
+
self.add_dialog(TextPrompt("TextPrompt"))
|
10 |
+
self.add_dialog(
|
11 |
+
WaterfallDialog(
|
12 |
+
"WFDialog",
|
13 |
+
[self.initial_step, self.process_step, self.final_step],
|
14 |
+
)
|
15 |
+
)
|
16 |
+
|
17 |
+
self.initial_dialog_id = "WFDialog"
|
18 |
+
|
19 |
+
async def initial_step(self, step_context: WaterfallStepContext) -> WaterfallStepContext:
|
20 |
+
return await step_context.prompt(
|
21 |
+
"TextPrompt",
|
22 |
+
PromptOptions(prompt=MessageFactory.text("What is your name?")),
|
23 |
+
)
|
24 |
+
|
25 |
+
async def process_step(self, step_context: WaterfallStepContext) -> WaterfallStepContext:
|
26 |
+
# Store the user's name in dialog state
|
27 |
+
step_context.values["name"] = step_context.result
|
28 |
+
return await step_context.prompt(
|
29 |
+
"TextPrompt",
|
30 |
+
PromptOptions(
|
31 |
+
prompt=MessageFactory.text(
|
32 |
+
f"Hello {step_context.result}! How can I assist you today?"
|
33 |
+
)
|
34 |
+
),
|
35 |
+
)
|
36 |
+
|
37 |
+
async def final_step(self, step_context: WaterfallStepContext) -> WaterfallStepContext:
|
38 |
+
user_message = step_context.result
|
39 |
+
|
40 |
+
# Here you could integrate the UniversalReasoning module
|
41 |
+
# For example, you might access it via the bot's context
|
42 |
+
# Since it's not directly available here, we'll pass the message back
|
43 |
+
|
44 |
+
# Send a confirmation message to the user
|
45 |
+
await step_context.context.send_activity(
|
46 |
+
MessageFactory.text(f"You said: {user_message}")
|
47 |
+
)
|
48 |
+
|
49 |
+
return await step_context.end_dialog()
|
microsoft.applicationinsights.extensibility.htm
ADDED
@@ -0,0 +1,857 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html><html
|
2 |
+
class="hasSidebar hasPageActions hasBreadcrumb reference reference has-default-focus theme-light"
|
3 |
+
lang="en-us"
|
4 |
+
dir="ltr"
|
5 |
+
data-authenticated="false"
|
6 |
+
data-auth-status-determined="false"
|
7 |
+
data-target="docs"
|
8 |
+
x-ms-format-detection="none">
|
9 |
+
|
10 |
+
<head>
|
11 |
+
<meta charset="utf-8" />
|
12 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
13 |
+
<meta property="og:title" content="OperationCorrelationTelemetryInitializer Class (Microsoft.ApplicationInsights.Extensibility) - Azure for .NET Developers" />
|
14 |
+
<meta property="og:type" content="website" />
|
15 |
+
<meta property="og:url" content="https://learn.microsoft.com/en-us/dotnet/api/microsoft.applicationinsights.extensibility.operationcorrelationtelemetryinitializer?view=azure-dotnet" /><meta property="og:description" content="Telemetry initializer that populates OperationContext for the telemetry item from Activity. This initializer is responsible for correlation of telemetry items within the same process. " /><meta property="og:image" content="https://learn.microsoft.com/en-us/media/open-graph-image.png" />
|
16 |
+
|
17 |
+
<meta property="og:image:alt" content="Microsoft Learn" />
|
18 |
+
|
19 |
+
<meta name="twitter:card" content="summary_large_image" />
|
20 |
+
|
21 |
+
<meta name="twitter:site" content="@MicrosoftLearn" />
|
22 |
+
|
23 |
+
<meta name="color-scheme" content="light dark"><meta name="APILocation" content="Microsoft.ApplicationInsights.dll" />
|
24 |
+
<meta name="APIName" content="Microsoft.ApplicationInsights.Extensibility.OperationCorrelationTelemetryInitializer" />
|
25 |
+
<meta name="APIType" content="Assembly" />
|
26 |
+
<meta name="apiPlatform" content="dotnet" />
|
27 |
+
<meta name="author" content="azure-sdk" />
|
28 |
+
<meta name="breadcrumb_path" content="../azure_breadcrumb/toc.json" />
|
29 |
+
<meta name="default_moniker" content="azure-dotnet" />
|
30 |
+
<meta name="depot_name" content="Azure.azuredotnet" />
|
31 |
+
<meta name="description" content="Telemetry initializer that populates OperationContext for the telemetry item from Activity. This initializer is responsible for correlation of telemetry items within the same process. " />
|
32 |
+
<meta name="document_id" content="6fb1b98b-984d-418b-a58f-9228f035a9e8" />
|
33 |
+
<meta name="document_version_independent_id" content="0f8cc622-e653-ca0f-8aff-b05f86a53350" />
|
34 |
+
<meta name="feedback_help_link_type" content="" />
|
35 |
+
<meta name="feedback_help_link_url" content="" />
|
36 |
+
<meta name="feedback_product_url" content="https://github.com/Azure/azure-sdk-for-net/issues" />
|
37 |
+
<meta name="feedback_system" content="OpenSource" />
|
38 |
+
<meta name="git_commit_id" content="015ee562806d8f10854a1aca8de55cd5c57d69cf" />
|
39 |
+
<meta name="gitcommit" content="https://github.com/Azure/azure-docs-sdk-dotnet/blob/015ee562806d8f10854a1aca8de55cd5c57d69cf/xml/Microsoft.ApplicationInsights.Extensibility/OperationCorrelationTelemetryInitializer.xml" />
|
40 |
+
<meta name="locale" content="en-us" />
|
41 |
+
<meta name="monikers" content="azure-dotnet" />
|
42 |
+
<meta name="monikers" content="azure-dotnet-preview" />
|
43 |
+
<meta name="ms.assetid" content="Microsoft.ApplicationInsights.Extensibility.OperationCorrelationTelemetryInitializer" />
|
44 |
+
<meta name="ms.author" content="azsdkdocs" />
|
45 |
+
<meta name="ms.custom" content="azure-dotnet-devcenter" />
|
46 |
+
<meta name="ms.custom" content="azure-dotnet-devcenter-generated" />
|
47 |
+
<meta name="ms.date" content="04/13/2021" />
|
48 |
+
<meta name="ms.devlang" content="csharp" />
|
49 |
+
<meta name="ms.service" content="azure-monitor" />
|
50 |
+
<meta name="ms.subservice" content="application-insights" />
|
51 |
+
<meta name="ms.topic" content="managed-reference" />
|
52 |
+
<meta name="namespace" content="Microsoft.ApplicationInsights.Extensibility" />
|
53 |
+
<meta name="original_content_git_url" content="https://github.com/Azure/azure-docs-sdk-dotnet/blob/live/xml/Microsoft.ApplicationInsights.Extensibility/OperationCorrelationTelemetryInitializer.xml" />
|
54 |
+
<meta name="page_kind" content="class" />
|
55 |
+
<meta name="page_type" content="dotnet" />
|
56 |
+
<meta name="products" content="https://authoring-docs-microsoft.poolparty.biz/devrel/33331e33-4d10-4194-85e4-6d7d7fffdc08" />
|
57 |
+
<meta name="schema" content="NetType" />
|
58 |
+
<meta name="search.mshattr.devlang" content="csharp vb fsharp" />
|
59 |
+
<meta name="site_name" content="Docs" />
|
60 |
+
<meta name="toc_rel" content="azure_ref_toc/_splitted/microsoft.applicationinsights.extensibility/toc.json" />
|
61 |
+
<meta name="TopicType" content="apiref" />
|
62 |
+
<meta name="uhfHeaderId" content="Azure" />
|
63 |
+
<meta name="uid" content="Microsoft.ApplicationInsights.Extensibility.OperationCorrelationTelemetryInitializer" />
|
64 |
+
<meta name="updated_at" content="2023-10-25 11:32 AM" />
|
65 |
+
<meta name="persistent_id" content="2a3cfc10-bae4-aafe-a297-cdbd149b1a66" />
|
66 |
+
|
67 |
+
|
68 |
+
<meta name="spProducts" content="https://authoring-docs-microsoft.poolparty.biz/devrel/a4222f1c-f55d-45fa-9db4-f663fe96f42c" data-source="generated" />
|
69 |
+
<meta name="scope" content="Azure, Azure SDK for .NET" /><meta name="github_feedback_content_git_url" content="https://github.com/Azure/azure-docs-sdk-dotnet/blob/master/xml/Microsoft.ApplicationInsights.Extensibility/OperationCorrelationTelemetryInitializer.xml" /><link href="https://learn.microsoft.com/en-us/dotnet/api/microsoft.applicationinsights.extensibility.operationcorrelationtelemetryinitializer?view=azure-dotnet" rel="canonical"><title>OperationCorrelationTelemetryInitializer Class (Microsoft.ApplicationInsights.Extensibility) - Azure for .NET Developers | Microsoft Learn</title><link rel="stylesheet" href="/static/assets/0.4.029026183/styles/site-ltr.css">
|
70 |
+
|
71 |
+
<script id="msdocs-script">
|
72 |
+
var msDocs = {environment: {
|
73 |
+
supportLevel: 'production',
|
74 |
+
accessLevel: 'online',
|
75 |
+
reviewFeatures: false,
|
76 |
+
systemContent: true,
|
77 |
+
azurePortalHostname: 'portal.azure.com',
|
78 |
+
legacyHosting: false,
|
79 |
+
siteName: 'learn',
|
80 |
+
},data: {
|
81 |
+
timeOrigin: Date.now(),
|
82 |
+
contentLocale: 'en-us',
|
83 |
+
contentDir: 'ltr',
|
84 |
+
userLocale: 'en-us',
|
85 |
+
userDir: 'ltr',
|
86 |
+
pageTemplate: 'Reference',
|
87 |
+
brand: 'azure',
|
88 |
+
context: {},
|
89 |
+
hasBinaryRating: true,
|
90 |
+
feedbackHelpLinkType:'',
|
91 |
+
feedbackHelpLinkUrl:'',
|
92 |
+
standardFeedback: false,
|
93 |
+
showFeedbackReport: false,
|
94 |
+
enableTutorialFeedback: false,
|
95 |
+
feedbackSystem: 'OpenSource',
|
96 |
+
feedbackGitHubRepo: 'Azure/azure-sdk-for-net',
|
97 |
+
feedbackProductUrl: 'https://github.com/Azure/azure-sdk-for-net/issues',extendBreadcrumb: true,isEditDisplayable: false,
|
98 |
+
hideViewSource: false,
|
99 |
+
hasPageActions: true,
|
100 |
+
hasPrintButton: true,
|
101 |
+
hasBookmark: true,
|
102 |
+
hasShare: true,
|
103 |
+
isPermissioned: false,
|
104 |
+
isPrivateUnauthorized: false,hasRecommendations: false,openSourceFeedback: true,
|
105 |
+
openSourceFeedbackIssueUrl: 'https://github.com/Azure/azure-sdk-for-net/issues/new?template=06_learn_feedback.yml',
|
106 |
+
openSourceFeedbackIssueTitle: '',
|
107 |
+
openSourceFeedbackIssueLabels: '',contributors: [{ name: "VSC-Service-Account", url: "https://github.com/VSC-Service-Account" },{ name: "TianqiZhang", url: "https://github.com/TianqiZhang" },{ name: "health-research", url: "https://github.com/health-research" },{ name: "glibnub", url: "https://github.com/glibnub" }],},
|
108 |
+
functions:{}
|
109 |
+
};
|
110 |
+
</script><script src="https://wcpstatic.microsoft.com/mscc/lib/v2/wcp-consent.js"></script>
|
111 |
+
<script src="https://js.monitor.azure.com/scripts/c/ms.jsll-4.min.js"></script><script src="/static/assets/0.4.029026183/global/deprecation.js"></script><script src="/static/assets/0.4.029026183/scripts/en-us/index-docs.js"></script></head>
|
112 |
+
|
113 |
+
<body lang="en-us" dir="ltr">
|
114 |
+
<div class="header-holder has-default-focus">
|
115 |
+
<a href="#main" style="z-index: 1070" class="outline-color-text visually-hidden-until-focused position-fixed inner-focus focus-visible top-0 left-0 right-0 padding-xs text-align-center has-body-background" tabindex="1">Skip to main content</a><a href="#side-doc-outline" style="z-index: 1070" class="outline-color-text visually-hidden-until-focused position-fixed inner-focus focus-visible top-0 left-0 right-0 padding-xs text-align-center has-body-background" tabindex="2">Skip to in-page navigation</a><div hidden id="cookie-consent-holder" data-test-id="cookie-consent-container"></div>
|
116 |
+
|
117 |
+
<div id="unsupported-browser" style="
|
118 |
+
background-color: white;
|
119 |
+
color: black;
|
120 |
+
padding: 16px;
|
121 |
+
border-bottom: 1px solid grey;"
|
122 |
+
hidden
|
123 |
+
>
|
124 |
+
<div style="max-width: 800px; margin: 0 auto;">
|
125 |
+
<p style="font-size: 24px">This browser is no longer supported.</p>
|
126 |
+
<p style="font-size: 16px; margin-top: 16px;">Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.</p>
|
127 |
+
<div style="margin-top: 12px;">
|
128 |
+
<a href="https://go.microsoft.com/fwlink/p/?LinkID=2092881 "
|
129 |
+
style="
|
130 |
+
background-color: #0078d4;
|
131 |
+
border: 1px solid #0078d4;
|
132 |
+
color: white;
|
133 |
+
padding: 6px 12px;
|
134 |
+
border-radius: 2px;
|
135 |
+
display: inline-block;
|
136 |
+
">Download Microsoft Edge</a>
|
137 |
+
<a href="https://learn.microsoft.com/en-us/lifecycle/faq/internet-explorer-microsoft-edge"
|
138 |
+
style="
|
139 |
+
background-color: white;
|
140 |
+
padding: 6px 12px;
|
141 |
+
border: 1px solid #505050;
|
142 |
+
color: #171717;
|
143 |
+
border-radius: 2px;
|
144 |
+
display: inline-block;
|
145 |
+
">More info about Internet Explorer and Microsoft Edge</a>
|
146 |
+
</div>
|
147 |
+
</div>
|
148 |
+
</div>
|
149 |
+
<!-- liquid-tag banners global -->
|
150 |
+
|
151 |
+
<!-- site header -->
|
152 |
+
<header id="ms--site-header" data-test-id="site-header-wrapper" role="banner" itemscope="itemscope" itemtype="http://schema.org/Organization">
|
153 |
+
<div id="ms--mobile-nav" class="site-header display-none-tablet padding-inline-none gap-none" data-bi-name="mobile-header" data-test-id="mobile-header"></div>
|
154 |
+
<div id="ms--primary-nav" class="site-header display-none display-flex-tablet" data-bi-name="L1-header" data-test-id="primary-header"></div>
|
155 |
+
<div id="ms--secondary-nav" class="site-header display-none display-flex-tablet" data-bi-name="L2-header" data-test-id="secondary-header"></div>
|
156 |
+
</header><div id="content-header" class="content-header uhf-container has-padding has-default-focus border-bottom-none" data-bi-name="content-header">
|
157 |
+
<div class="content-header-controls margin-xxs margin-inline-sm-tablet">
|
158 |
+
<button type="button" class="contents-button button button-sm margin-right-xxs" data-bi-name="contents-expand" aria-haspopup="true" data-contents-button>
|
159 |
+
<span class="icon"><span class="docon docon-menu" aria-hidden="true"></span></span>
|
160 |
+
<span class="contents-expand-title">Table of contents</span>
|
161 |
+
</button>
|
162 |
+
<button type="button" class="ap-collapse-behavior ap-expanded button button-sm" data-bi-name="ap-collapse" aria-controls="action-panel">
|
163 |
+
<span class="icon"><span class="docon docon-exit-mode" aria-hidden="true"></span></span>
|
164 |
+
<span>Exit focus mode</span>
|
165 |
+
</button>
|
166 |
+
</div>
|
167 |
+
</div><div id="disclaimer-holder" class="has-overflow-hidden has-default-focus">
|
168 |
+
<!-- liquid-tag banners sectional -->
|
169 |
+
</div>
|
170 |
+
</div>
|
171 |
+
|
172 |
+
<div class="mainContainer uhf-container has-default-focus" data-bi-name="body">
|
173 |
+
|
174 |
+
<div class="columns has-large-gaps is-gapless-mobile "><div id="left-container" class="left-container is-hidden-mobile column is-one-third-tablet is-one-quarter-desktop">
|
175 |
+
<nav id="affixed-left-container" class="margin-top-sm-tablet position-sticky display-flex flex-direction-column" aria-label="Primary"></nav>
|
176 |
+
</div><!-- .primary-holder -->
|
177 |
+
<section class="primary-holder column is-two-thirds-tablet is-three-quarters-desktop">
|
178 |
+
<!--div.columns -->
|
179 |
+
<div class="columns is-gapless-mobile has-large-gaps "><div id="main-column" class="column is-full is-8-desktop">
|
180 |
+
|
181 |
+
<main id="main" class="" role="main" data-bi-name="content" lang="en-us" dir="ltr"><!-- article-header -->
|
182 |
+
<div id="article-header" class="background-color-body margin-top-sm-tablet margin-bottom-xs display-none-print">
|
183 |
+
<div class="display-flex align-items-center "><details id="article-header-breadcrumbs-overflow-popover" class="popover" data-for="article-header-breadcrumbs">
|
184 |
+
<summary class="button button-clear button-primary button-sm inner-focus" aria-label="All breadcrumbs">
|
185 |
+
<span class="icon">
|
186 |
+
<span class="docon docon-more"></span>
|
187 |
+
</span>
|
188 |
+
</summary>
|
189 |
+
<div id="article-header-breadcrumbs-overflow" class="popover-content padding-none">
|
190 |
+
|
191 |
+
</div>
|
192 |
+
</details>
|
193 |
+
|
194 |
+
<bread-crumbs id="article-header-breadcrumbs" data-test-id="article-header-breadcrumbs" class="overflow-hidden flex-grow-1 margin-right-sm margin-right-md-tablet margin-right-lg-desktop margin-left-negative-xxs padding-left-xxs"></bread-crumbs><div id="article-header-page-actions" class="opacity-none margin-left-auto display-flex flex-wrap-no-wrap align-items-stretch"><div class="language dropdown display-flex align-items-center">
|
195 |
+
<button class="dropdown-trigger button button-clear button-sm button-primary" aria-controls="language-menu" aria-expanded="false" title="Language" data-bi-name="language">
|
196 |
+
<span class="lang-title align-self-flex-start" dir="ltr">Language</span>
|
197 |
+
<span class="icon" aria-hidden="true">
|
198 |
+
<span class="docon docon-chevron-down-light expanded-indicator"></span>
|
199 |
+
</span>
|
200 |
+
</button>
|
201 |
+
<div class="dropdown-menu padding-xxs language-selector" name="language-selector" role="menu">
|
202 |
+
<ul data-bi-name="language-links" dir="ltr"><li>
|
203 |
+
<a class="button button-clear button-sm button-block" data-bi-name="lang-csharp" tabindex="0" aria-selected="false"></a>
|
204 |
+
</li><li>
|
205 |
+
<a class="button button-clear button-sm button-block" data-bi-name="lang-vb" tabindex="0" aria-selected="false"></a>
|
206 |
+
</li><li>
|
207 |
+
<a class="button button-clear button-sm button-block" data-bi-name="lang-fsharp" tabindex="0" aria-selected="false"></a>
|
208 |
+
</li></ul>
|
209 |
+
</div>
|
210 |
+
</div><a
|
211 |
+
id="lang-link-tablet"
|
212 |
+
class="button button-primary button-clear button-sm display-none display-inline-flex-tablet"
|
213 |
+
title="Read in English" data-bi-name="language-toggle"
|
214 |
+
data-read-in-link
|
215 |
+
hidden>
|
216 |
+
<span class="icon margin-none" aria-hidden="true" data-read-in-link-icon>
|
217 |
+
<span class="docon docon-locale-globe"></span>
|
218 |
+
</span>
|
219 |
+
<span class="is-visually-hidden" data-read-in-link-text>Read in English</span>
|
220 |
+
</a><button
|
221 |
+
type="button"
|
222 |
+
class="collection button button-clear button-sm button-primary display-none display-inline-flex-tablet"
|
223 |
+
data-list-type="collection"
|
224 |
+
data-bi-name="collection"
|
225 |
+
title="Add to collection">
|
226 |
+
<span class="icon margin-none" aria-hidden="true">
|
227 |
+
<span class="docon docon-circle-addition"></span>
|
228 |
+
</span>
|
229 |
+
<span class="collection-status is-visually-hidden">Save</span>
|
230 |
+
</button><a data-contenteditbtn
|
231 |
+
class="button button-clear button-sm text-decoration-none button-primary display-none display-inline-flex-tablet"
|
232 |
+
aria-label="Edit"
|
233 |
+
title="Edit This Document"
|
234 |
+
data-bi-name="edit"
|
235 |
+
hidden
|
236 |
+
href="https://github.com/Azure/azure-docs-sdk-dotnet/blob/master/xml/Microsoft.ApplicationInsights.Extensibility/OperationCorrelationTelemetryInitializer.xml"
|
237 |
+
data-original_content_git_url="https://github.com/Azure/azure-docs-sdk-dotnet/blob/live/xml/Microsoft.ApplicationInsights.Extensibility/OperationCorrelationTelemetryInitializer.xml"
|
238 |
+
data-original_content_git_url_template="{repo}/blob/{branch}/xml/Microsoft.ApplicationInsights.Extensibility/OperationCorrelationTelemetryInitializer.xml"
|
239 |
+
data-pr_repo=""
|
240 |
+
data-pr_branch="">
|
241 |
+
<span class="icon margin-none" aria-hidden="true">
|
242 |
+
<span class="docon docon-edit-outline"></span>
|
243 |
+
</span>
|
244 |
+
</a>
|
245 |
+
<details class="popover popover-right" id="article-header-page-actions-overflow">
|
246 |
+
<summary class="justify-content-flex-start button button-clear button-sm button-primary" aria-label="More actions" title="More actions">
|
247 |
+
<span class="icon" aria-hidden="true">
|
248 |
+
<span class="docon docon-more-vertical"></span>
|
249 |
+
</span>
|
250 |
+
</summary>
|
251 |
+
<div class="popover-content padding-xs"><button
|
252 |
+
data-page-action-item="overflow-mobile"
|
253 |
+
type="button"
|
254 |
+
class="justify-content-flex-start button-block button-sm has-inner-focus button button-clear display-none-tablet"
|
255 |
+
data-bi-name="contents-expand"
|
256 |
+
data-contents-button
|
257 |
+
data-popover-close>
|
258 |
+
<span class="icon">
|
259 |
+
<span class="docon docon-editor-list-bullet" aria-hidden="true"></span>
|
260 |
+
</span><span class="contents-expand-title">Table of contents</span></button><a
|
261 |
+
id="lang-link-overflow"
|
262 |
+
class="justify-content-flex-start button-sm has-inner-focus button button-clear button-block display-none-tablet"
|
263 |
+
title="Read in English" data-bi-name="language-toggle"
|
264 |
+
data-page-action-item="overflow-mobile"
|
265 |
+
data-check-hidden="true"
|
266 |
+
data-read-in-link
|
267 |
+
hidden
|
268 |
+
>
|
269 |
+
<span class="icon" aria-hidden="true" data-read-in-link-icon>
|
270 |
+
<span class="docon docon-locale-globe"></span>
|
271 |
+
</span>
|
272 |
+
<span data-read-in-link-text>Read in English</span>
|
273 |
+
</a><button
|
274 |
+
type="button"
|
275 |
+
class="collection justify-content-flex-start button button-clear button-sm has-inner-focus button-block display-none-tablet"
|
276 |
+
data-list-type="collection"
|
277 |
+
data-bi-name="collection"
|
278 |
+
title="Save"
|
279 |
+
data-page-action-item="overflow-mobile"
|
280 |
+
data-check-hidden="true"
|
281 |
+
data-popover-close>
|
282 |
+
<span class="icon" aria-hidden="true">
|
283 |
+
<span class="docon docon-circle-addition"></span>
|
284 |
+
</span>
|
285 |
+
<span class="collection-status">Save</span>
|
286 |
+
</button>
|
287 |
+
|
288 |
+
|
289 |
+
<button
|
290 |
+
type="button"
|
291 |
+
class="collection justify-content-flex-start button button-clear button-sm has-inner-focus button-block display-none-tablet"
|
292 |
+
data-list-type="plan"
|
293 |
+
data-bi-name="plan"
|
294 |
+
title="Add to Plan"
|
295 |
+
data-page-action-item="overflow-mobile"
|
296 |
+
data-check-hidden="true"
|
297 |
+
data-popover-close
|
298 |
+
hidden>
|
299 |
+
<span class="icon" aria-hidden="true">
|
300 |
+
<span class="docon docon-circle-addition"></span>
|
301 |
+
</span>
|
302 |
+
<span class="plan-status">Add to Plan</span>
|
303 |
+
</button><a data-contenteditbtn
|
304 |
+
class="button button-clear button-block button-sm has-inner-focus justify-content-flex-start text-decoration-none display-none-tablet"
|
305 |
+
aria-label="Edit"
|
306 |
+
title="Edit This Document"
|
307 |
+
data-bi-name="edit"
|
308 |
+
hidden
|
309 |
+
href="https://github.com/Azure/azure-docs-sdk-dotnet/blob/master/xml/Microsoft.ApplicationInsights.Extensibility/OperationCorrelationTelemetryInitializer.xml"
|
310 |
+
data-original_content_git_url="https://github.com/Azure/azure-docs-sdk-dotnet/blob/live/xml/Microsoft.ApplicationInsights.Extensibility/OperationCorrelationTelemetryInitializer.xml"
|
311 |
+
data-original_content_git_url_template="{repo}/blob/{branch}/xml/Microsoft.ApplicationInsights.Extensibility/OperationCorrelationTelemetryInitializer.xml"
|
312 |
+
data-pr_repo=""
|
313 |
+
data-pr_branch="">
|
314 |
+
<span class="icon" aria-hidden="true">
|
315 |
+
<span class="docon docon-edit-outline"></span>
|
316 |
+
</span>
|
317 |
+
<span>Edit</span>
|
318 |
+
</a><div aria-hidden="true" class="margin-none" data-page-action-item="overflow-all"></div>
|
319 |
+
<hr class="display-none-tablet margin-bottom-xxs margin-top-xxs" />
|
320 |
+
<h4 class="font-size-sm padding-left-xxs">Share via</h4>
|
321 |
+
|
322 |
+
<a class="button button-clear button-sm button-block has-inner-focus text-decoration-none justify-content-flex-start share-facebook" data-bi-name="facebook" data-page-action-item="overflow-all">
|
323 |
+
<span class="icon" aria-hidden="true">
|
324 |
+
<span class="docon docon-facebook-share font-size-md color-primary"></span>
|
325 |
+
</span>
|
326 |
+
<span class="margin-left-xxs">Facebook</span>
|
327 |
+
</a>
|
328 |
+
<a class="button button-clear button-sm has-inner-focus button-block text-decoration-none justify-content-flex-start share-twitter" data-bi-name="twitter" data-page-action-item="overflow-all">
|
329 |
+
<span class="icon" aria-hidden="true">
|
330 |
+
<span class="docon docon-xlogo-share font-size-xxs"></span>
|
331 |
+
</span>
|
332 |
+
<span class="margin-left-xxs">x.com</span>
|
333 |
+
</a>
|
334 |
+
<a class="button button-clear button-sm has-inner-focus button-block text-decoration-none justify-content-flex-start share-linkedin" data-bi-name="linkedin" data-page-action-item="overflow-all">
|
335 |
+
<span class="icon" aria-hidden="true">
|
336 |
+
<span class="docon docon-linked-in-logo font-size-sm color-primary"></span>
|
337 |
+
</span>
|
338 |
+
<span class="margin-left-xxs">LinkedIn</span>
|
339 |
+
</a>
|
340 |
+
<a class="button button-clear button-sm button-block has-inner-focus text-decoration-none justify-content-flex-start margin-bottom-xxs share-email" data-bi-name="email" data-page-action-item="overflow-all">
|
341 |
+
<span class="icon" aria-hidden="true">
|
342 |
+
<span class="docon docon-mail-message font-size-sm color-primary"></span>
|
343 |
+
</span>
|
344 |
+
<span class="margin-left-xxs">Email</span>
|
345 |
+
</a><hr />
|
346 |
+
<button
|
347 |
+
class="button button-block button-clear button-sm justify-content-flex-start has-inner-focus margin-top-xxs"
|
348 |
+
title="Print"
|
349 |
+
type="button"
|
350 |
+
aria-label="Print"
|
351 |
+
data-bi-name="print"
|
352 |
+
data-page-action-item="overflow-all"
|
353 |
+
data-popover-close
|
354 |
+
data-print-page
|
355 |
+
data-check-hidden="true">
|
356 |
+
<span class="icon" aria-hidden="true">
|
357 |
+
<span class="docon docon-print font-size-sm color-primary"></span>
|
358 |
+
</span>
|
359 |
+
<span class="margin-left-xxs">Print</span>
|
360 |
+
</button>
|
361 |
+
</div>
|
362 |
+
</details>
|
363 |
+
|
364 |
+
</div></div>
|
365 |
+
</div>
|
366 |
+
<!-- end article-header --><div>
|
367 |
+
<button type="button" class="border contents-button button button-clear button-sm is-hidden-tablet has-inner-focus" data-bi-name="contents-expand" data-contents-button hidden>
|
368 |
+
<span class="icon">
|
369 |
+
<span class="docon docon-editor-list-bullet" aria-hidden="true"></span>
|
370 |
+
</span><span class="contents-expand-title">Table of contents</span></button>
|
371 |
+
</div><!-- end mobile-contents button -->
|
372 |
+
|
373 |
+
<div class="content "><!-- <content> --><h1>Operation<wbr>Correlation<wbr>Telemetry<wbr>Initializer Class</h1>
|
374 |
+
|
375 |
+
<div class="display-flex-tablet justify-content-space-between-tablet">
|
376 |
+
<ul class="metadata page-metadata align-items-center" data-bi-name="page info">
|
377 |
+
<li>Reference</li>
|
378 |
+
</ul>
|
379 |
+
<div id="user-feedback" class="margin-block-xxs display-none-print" data-hide-on-archived="">
|
380 |
+
<button id="user-feedback-button" data-test-id="conceptual-feedback-button" class="button button-sm button-clear button-primary" type="button" data-bi-name="user-feedback-button" data-user-feedback-button="">
|
381 |
+
<span class="icon" aria-hidden="true">
|
382 |
+
<span class="docon docon-like"></span>
|
383 |
+
</span>
|
384 |
+
<span>Feedback</span>
|
385 |
+
</button>
|
386 |
+
</div>
|
387 |
+
</div>
|
388 |
+
|
389 |
+
<nav id="center-doc-outline" class="doc-outline is-hidden-desktop display-none-print margin-bottom-sm" data-bi-name="intopic toc" aria-label="">
|
390 |
+
<h2 class="title is-6 margin-block-xs"></h2>
|
391 |
+
</nav>
|
392 |
+
<h2 id="definition">Definition</h2>
|
393 |
+
|
394 |
+
<div class="metadata">
|
395 |
+
<dl class="attributeList">
|
396 |
+
<dt>Namespace:</dt>
|
397 |
+
<dd>
|
398 |
+
<span class="break-text"> <a class="xref" href="microsoft.applicationinsights.extensibility?view=azure-dotnet" data-linktype="relative-path">Microsoft.ApplicationInsights.Extensibility</a> </span>
|
399 |
+
</dd>
|
400 |
+
</dl>
|
401 |
+
|
402 |
+
|
403 |
+
<dl class="attributeList" data-moniker=" azure-dotnet azure-dotnet-preview ">
|
404 |
+
<dt>Assembly:</dt><dd>Microsoft.ApplicationInsights.dll</dd>
|
405 |
+
</dl>
|
406 |
+
|
407 |
+
<dl class="attributeList" data-moniker=" azure-dotnet ">
|
408 |
+
<dt>Package:</dt><dd>Microsoft.ApplicationInsights v2.21.0</dd>
|
409 |
+
</dl>
|
410 |
+
<dl class="attributeList" data-moniker=" azure-dotnet-preview ">
|
411 |
+
<dt>Package:</dt><dd>Microsoft.ApplicationInsights v2.22.0-beta2</dd>
|
412 |
+
</dl>
|
413 |
+
|
414 |
+
|
415 |
+
</div><div class="alert is-primary is-hidden moniker-display-boilerplate">
|
416 |
+
<p class="alert-title">
|
417 |
+
<span class="docon docon-status-info-outline" aria-hidden="true"></span> Important
|
418 |
+
</p>
|
419 |
+
<p>Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.</p>
|
420 |
+
</div>
|
421 |
+
<div class="summaryHolder">
|
422 |
+
<div class="summary clearFix has-text-wrap">
|
423 |
+
<p>Telemetry initializer that populates OperationContext for the telemetry item from Activity.
|
424 |
+
This initializer is responsible for correlation of telemetry items within the same process.</p>
|
425 |
+
|
426 |
+
</div>
|
427 |
+
</div>
|
428 |
+
|
429 |
+
<pre class="wrap" data-moniker=" azure-dotnet azure-dotnet-preview "><code class="csharp lang-csharp" dir="ltr">public class OperationCorrelationTelemetryInitializer : Microsoft.ApplicationInsights.Extensibility.ITelemetryInitializer</code></pre>
|
430 |
+
<pre class="wrap" data-moniker=" azure-dotnet azure-dotnet-preview "><code class="fsharp lang-fsharp" dir="ltr">type OperationCorrelationTelemetryInitializer = class
|
431 |
+
interface ITelemetryInitializer</code></pre>
|
432 |
+
<pre class="wrap" data-moniker=" azure-dotnet azure-dotnet-preview "><code class="vb lang-vb" dir="ltr">Public Class OperationCorrelationTelemetryInitializer
|
433 |
+
Implements ITelemetryInitializer</code></pre>
|
434 |
+
<dl class="attributeList stack">
|
435 |
+
<dt>Inheritance</dt>
|
436 |
+
<dd>
|
437 |
+
<div class="pdlHolder">
|
438 |
+
<div class="pdl"><a href="/en-us/dotnet/api/system.object" data-linktype="absolute-path">Object</a></div>
|
439 |
+
<span>OperationCorrelationTelemetryInitializer</span>
|
440 |
+
</div>
|
441 |
+
</dd>
|
442 |
+
</dl>
|
443 |
+
<dl class="attributeList stack">
|
444 |
+
<dt>Implements</dt><dd>
|
445 |
+
<div class="cdlHolder">
|
446 |
+
<span class="cdl">
|
447 |
+
<span class="break-text"><a href="microsoft.applicationinsights.extensibility.itelemetryinitializer?view=azure-dotnet" data-linktype="relative-path">ITelemetryInitializer</a></span>
|
448 |
+
</span>
|
449 |
+
</div>
|
450 |
+
</dd>
|
451 |
+
</dl>
|
452 |
+
|
453 |
+
|
454 |
+
|
455 |
+
<h2 id="constructors">
|
456 |
+
Constructors
|
457 |
+
</h2>
|
458 |
+
<table class="table">
|
459 |
+
<tbody><tr>
|
460 |
+
<td colspan="2">
|
461 |
+
<span class="break-text">
|
462 |
+
<a class="xref" href="microsoft.applicationinsights.extensibility.operationcorrelationtelemetryinitializer.-ctor?view=azure-dotnet#microsoft-applicationinsights-extensibility-operationcorrelationtelemetryinitializer-ctor" data-linktype="relative-path">OperationCorrelationTelemetryInitializer()</a>
|
463 |
+
</span>
|
464 |
+
</td>
|
465 |
+
|
466 |
+
</tr>
|
467 |
+
</tbody></table>
|
468 |
+
|
469 |
+
|
470 |
+
|
471 |
+
|
472 |
+
<h2 id="methods">
|
473 |
+
Methods
|
474 |
+
</h2>
|
475 |
+
<table class="table">
|
476 |
+
<tbody><tr>
|
477 |
+
<td>
|
478 |
+
<span class="break-text">
|
479 |
+
<a class="xref" href="microsoft.applicationinsights.extensibility.operationcorrelationtelemetryinitializer.initialize?view=azure-dotnet#microsoft-applicationinsights-extensibility-operationcorrelationtelemetryinitializer-initialize(microsoft-applicationinsights-channel-itelemetry)" data-linktype="relative-path">Initialize(ITelemetry)</a>
|
480 |
+
</span>
|
481 |
+
</td>
|
482 |
+
<td class="has-text-wrap">
|
483 |
+
<p>Initializes/Adds operation context to the existing telemetry item.</p>
|
484 |
+
|
485 |
+
</td>
|
486 |
+
|
487 |
+
</tr>
|
488 |
+
</tbody></table>
|
489 |
+
|
490 |
+
|
491 |
+
|
492 |
+
|
493 |
+
|
494 |
+
|
495 |
+
|
496 |
+
<h2>Applies to</h2>
|
497 |
+
<div class="table-wrapper moniker-applies-to-table">
|
498 |
+
<table class="table table-complex has-row-header-background">
|
499 |
+
<thead>
|
500 |
+
</thead>
|
501 |
+
</table>
|
502 |
+
</div>
|
503 |
+
|
504 |
+
|
505 |
+
</div><div id="ms--inline-notifications" class="margin-block-xs" data-bi-name="inline-notification"></div><div id="assertive-live-region" role="alert" aria-live="assertive" class="visually-hidden" aria-relevant="additions" aria-atomic="true"></div>
|
506 |
+
<div id="polite-live-region" role="status" aria-live="polite" class="visually-hidden" aria-relevant="additions" aria-atomic="true"></div>
|
507 |
+
<!-- </content> -->
|
508 |
+
|
509 |
+
</main><!-- recommendations section --><!-- end recommendations section -->
|
510 |
+
|
511 |
+
<!-- feedback section --><section class="feedback-section position-relative margin-top-lg border border-radius padding-xxs" data-bi-name="open-source-feedback-section" data-open-source-feedback-section hidden>
|
512 |
+
<div class="display-flex flex-direction-column flex-direction-row-tablet">
|
513 |
+
<div class="width-450-tablet padding-inline-xs padding-inline-xs-tablet padding-top-xs padding-bottom-sm padding-top-xs-tablet background-color-body-medium">
|
514 |
+
<div class="display-flex flex-direction-column">
|
515 |
+
<div class="padding-bottom-xxs">
|
516 |
+
<span class="icon margin-right-xxs" aria-hidden="true">
|
517 |
+
<span class="docon docon-brand-github"></span>
|
518 |
+
</span>
|
519 |
+
<span class="font-weight-semibold"
|
520 |
+
>Collaborate with us on GitHub</span>
|
521 |
+
</div>
|
522 |
+
<span class="line-height-normal">
|
523 |
+
The source for this content can be found on GitHub, where you can also create and review issues and pull requests. For more information, see <a href="https://github.com/Azure/azure-sdk-for-net/blob/main/CONTRIBUTING.md">our contributor guide</a>.
|
524 |
+
</span>
|
525 |
+
</div>
|
526 |
+
</div>
|
527 |
+
<div class="display-flex gap-xs width-full-tablet flex-direction-column padding-xs justify-content-space-evenly">
|
528 |
+
<div class="media"><div class="media-left">
|
529 |
+
<div class="image image-36x36" hidden data-open-source-image-container>
|
530 |
+
<img class="theme-display is-light" src="https://azure.github.io/azure-sdk/images/azure-sdk-glyph.svg" aria-hidden="true" data-open-source-image-light/>
|
531 |
+
<img class="theme-display is-dark is-high-contrast" src="https://azure.github.io/azure-sdk/images/azure-sdk-glyph.svg" aria-hidden="true" data-open-source-image-dark/>
|
532 |
+
</div>
|
533 |
+
</div>
|
534 |
+
|
535 |
+
<div class="media-content">
|
536 |
+
<p class="font-size-xl font-weight-semibold margin-bottom-xxs" data-open-source-product-title>Azure SDK for .NET</p>
|
537 |
+
<div class="display-flex gap-xs flex-direction-column">
|
538 |
+
<p class="line-height-normal" data-open-source-product-description></p>
|
539 |
+
<div class="display-flex gap-xs flex-direction-column">
|
540 |
+
<a href="" data-github-link>
|
541 |
+
<span class="icon margin-right-xxs" aria-hidden="true">
|
542 |
+
<span class="docon docon-bug"></span>
|
543 |
+
</span>
|
544 |
+
<span>Open a documentation issue</span>
|
545 |
+
</a>
|
546 |
+
<a href="https://github.com/Azure/azure-sdk-for-net/issues" class="display-block margin-top-auto font-size-md" data-feedback-product-url>
|
547 |
+
<span class="icon margin-right-xxs" aria-hidden="true">
|
548 |
+
<span class="docon docon-feedback"></span>
|
549 |
+
</span>
|
550 |
+
<span>Provide product feedback</span>
|
551 |
+
</a>
|
552 |
+
</div>
|
553 |
+
</div>
|
554 |
+
</div>
|
555 |
+
</div>
|
556 |
+
</div>
|
557 |
+
</div>
|
558 |
+
</section><!-- end feedback section -->
|
559 |
+
|
560 |
+
<!-- feedback report section --><!-- end feedback report section --><div class="border-top is-visible-interactive has-default-focus margin-top-sm "><footer id="footer-interactive" data-bi-name="footer" class="footer-layout"><div class="display-flex gap-xs flex-wrap-wrap is-full-height padding-right-lg-desktop"><a
|
561 |
+
data-mscc-ic="false"
|
562 |
+
class="locale-selector-link button button-sm button-clear flex-shrink-0"
|
563 |
+
href="#"
|
564 |
+
data-bi-name="select-locale">
|
565 |
+
<span class="icon" aria-hidden="true">
|
566 |
+
<span class="docon docon-world"></span>
|
567 |
+
</span>
|
568 |
+
<span class="local-selector-link-text"></span></a><div class="ccpa-privacy-link" data-ccpa-privacy-link hidden>
|
569 |
+
<a
|
570 |
+
href="https://aka.ms/yourcaliforniaprivacychoices"
|
571 |
+
class="button button-sm button-clear flex-shrink-0"
|
572 |
+
data-mscc-ic="false"
|
573 |
+
data-bi-name="your-privacy-choices"
|
574 |
+
>
|
575 |
+
<svg
|
576 |
+
role="img"
|
577 |
+
aria-label="California Consumer Privacy Act (CCPA) Opt-Out Icon"
|
578 |
+
xmlns="http://www.w3.org/2000/svg"
|
579 |
+
viewBox="0 0 30 14"
|
580 |
+
xml:space="preserve"
|
581 |
+
height="16"
|
582 |
+
width="43"
|
583 |
+
focusable="false"
|
584 |
+
>
|
585 |
+
<title>California Consumer Privacy Act (CCPA) Opt-Out Icon</title>
|
586 |
+
<path d="M7.4 12.8h6.8l3.1-11.6H7.4C4.2 1.2 1.6 3.8 1.6 7s2.6 5.8 5.8 5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#fff"></path>
|
587 |
+
<path d="M22.6 0H7.4c-3.9 0-7 3.1-7 7s3.1 7 7 7h15.2c3.9 0 7-3.1 7-7s-3.2-7-7-7zm-21 7c0-3.2 2.6-5.8 5.8-5.8h9.9l-3.1 11.6H7.4c-3.2 0-5.8-2.6-5.8-5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#06f"></path>
|
588 |
+
<path d="M24.6 4c.2.2.2.6 0 .8L22.5 7l2.2 2.2c.2.2.2.6 0 .8-.2.2-.6.2-.8 0l-2.2-2.2-2.2 2.2c-.2.2-.6.2-.8 0-.2-.2-.2-.6 0-.8L20.8 7l-2.2-2.2c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0l2.2 2.2L23.8 4c.2-.2.6-.2.8 0z" style="fill:#fff"></path>
|
589 |
+
<path d="M12.7 4.1c.2.2.3.6.1.8L8.6 9.8c-.1.1-.2.2-.3.2-.2.1-.5.1-.7-.1L5.4 7.7c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0L8 8.6l3.8-4.5c.2-.2.6-.2.9 0z" style="fill:#06f"></path>
|
590 |
+
</svg>
|
591 |
+
<span>Your Privacy Choices</span>
|
592 |
+
</a>
|
593 |
+
|
594 |
+
</div>
|
595 |
+
<div class="flex-shrink-0">
|
596 |
+
<div class="dropdown has-caret-up">
|
597 |
+
<button class="dropdown-trigger button button-clear button-sm has-inner-focus theme-dropdown-trigger"
|
598 |
+
aria-controls="theme-menu-interactive" aria-expanded="false" title="Theme" data-bi-name="theme">
|
599 |
+
<span class="icon">
|
600 |
+
<span class="docon docon-sun" aria-hidden="true"></span>
|
601 |
+
</span>
|
602 |
+
<span>Theme</span>
|
603 |
+
<span class="icon expanded-indicator" aria-hidden="true">
|
604 |
+
<span class="docon docon-chevron-down-light"></span>
|
605 |
+
</span>
|
606 |
+
</button>
|
607 |
+
<div class="dropdown-menu" id="theme-menu-interactive" role="menu">
|
608 |
+
<ul class="theme-selector padding-xxs" role="none">
|
609 |
+
<li class="theme display-block" role="menuitem">
|
610 |
+
<button class="button button-clear button-sm theme-control button-block justify-content-flex-start"
|
611 |
+
data-theme-to="light">
|
612 |
+
<span class="theme-light margin-right-xxs">
|
613 |
+
<span
|
614 |
+
class="theme-selector-icon border display-inline-block has-body-background"
|
615 |
+
aria-hidden="true">
|
616 |
+
<svg class="svg" xmlns="http://www.w3.org/2000/svg"
|
617 |
+
viewBox="0 0 22 14">
|
618 |
+
<rect width="22" height="14" class="has-fill-body-background" />
|
619 |
+
<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
|
620 |
+
<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
|
621 |
+
<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
|
622 |
+
<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
|
623 |
+
<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
|
624 |
+
<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
|
625 |
+
<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
|
626 |
+
</svg>
|
627 |
+
</span>
|
628 |
+
</span>
|
629 |
+
<span>Light</span>
|
630 |
+
</button>
|
631 |
+
</li>
|
632 |
+
<li class="theme display-block" role="menuitem">
|
633 |
+
<button class="button button-clear button-sm theme-control button-block justify-content-flex-start"
|
634 |
+
data-theme-to="dark">
|
635 |
+
<span class="theme-dark margin-right-xxs">
|
636 |
+
<span
|
637 |
+
class="border theme-selector-icon display-inline-block has-body-background"
|
638 |
+
aria-hidden="true">
|
639 |
+
<svg class="svg" xmlns="http://www.w3.org/2000/svg"
|
640 |
+
viewBox="0 0 22 14">
|
641 |
+
<rect width="22" height="14" class="has-fill-body-background" />
|
642 |
+
<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
|
643 |
+
<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
|
644 |
+
<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
|
645 |
+
<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
|
646 |
+
<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
|
647 |
+
<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
|
648 |
+
<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
|
649 |
+
</svg>
|
650 |
+
</span>
|
651 |
+
</span>
|
652 |
+
<span>Dark</span>
|
653 |
+
</button>
|
654 |
+
</li>
|
655 |
+
<li class="theme display-block" role="menuitem">
|
656 |
+
<button class="button button-clear button-sm theme-control button-block justify-content-flex-start"
|
657 |
+
data-theme-to="high-contrast">
|
658 |
+
<span class="theme-high-contrast margin-right-xxs">
|
659 |
+
<span
|
660 |
+
class="border theme-selector-icon display-inline-block has-body-background"
|
661 |
+
aria-hidden="true">
|
662 |
+
<svg class="svg" xmlns="http://www.w3.org/2000/svg"
|
663 |
+
viewBox="0 0 22 14">
|
664 |
+
<rect width="22" height="14" class="has-fill-body-background" />
|
665 |
+
<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
|
666 |
+
<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
|
667 |
+
<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
|
668 |
+
<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
|
669 |
+
<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
|
670 |
+
<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
|
671 |
+
<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
|
672 |
+
</svg>
|
673 |
+
</span>
|
674 |
+
</span>
|
675 |
+
<span>High contrast</span>
|
676 |
+
</button>
|
677 |
+
</li>
|
678 |
+
</ul>
|
679 |
+
</div>
|
680 |
+
</div>
|
681 |
+
|
682 |
+
</div>
|
683 |
+
</div>
|
684 |
+
<ul class="links" data-bi-name="footerlinks">
|
685 |
+
<li class="manage-cookies-holder" hidden></li><li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/previous-versions/" data-bi-name="archivelink">Previous Versions</a></li>
|
686 |
+
<li><a class="external-link-indicator" data-mscc-ic="false" href="https://techcommunity.microsoft.com/t5/microsoft-learn-blog/bg-p/MicrosoftLearnBlog" data-bi-name="bloglink">Blog</a></li>
|
687 |
+
<li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/contribute/" data-bi-name="contributorGuide">Contribute</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="https://go.microsoft.com/fwlink/?LinkId=521839" data-bi-name="privacy">Privacy</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/legal/termsofuse" data-bi-name="termsofuse">Terms of Use</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="https://www.microsoft.com/legal/intellectualproperty/Trademarks/" data-bi-name="trademarks">Trademarks</a></li><li>© Microsoft 2024</li>
|
688 |
+
</ul>
|
689 |
+
</footer></div></div><div
|
690 |
+
id="ms--additional-resources"
|
691 |
+
class="right-container column is-4-desktop display-none display-block-desktop"
|
692 |
+
data-bi-name="pageactions"
|
693 |
+
role="complementary"
|
694 |
+
aria-label="Additional resources"
|
695 |
+
>
|
696 |
+
<div id="affixed-right-container" class="margin-top-sm-tablet" data-bi-name="right-column">
|
697 |
+
<h2 id="ms--additional-resources-heading" class="title is-6 margin-top-md" hidden>Additional resources</h2>
|
698 |
+
<section id="right-rail-events" data-bi-name="events-card" hidden></section>
|
699 |
+
<section id="right-rail-training" data-bi-name="learning-resources-card" hidden></section>
|
700 |
+
<section id="right-rail-recommendations" data-bi-name="recommendations" hidden></section>
|
701 |
+
<nav id="side-doc-outline" class="doc-outline" data-bi-name="intopic toc" aria-label="In this article">
|
702 |
+
<h3>In this article</h3>
|
703 |
+
</nav>
|
704 |
+
<section id="right-rail-qna" class="margin-top-xxs" data-bi-name="qna-link-card" hidden></section>
|
705 |
+
</div>
|
706 |
+
</div></div>
|
707 |
+
<!--end of div.columns -->
|
708 |
+
|
709 |
+
</section>
|
710 |
+
<!--end of .primary-holder -->
|
711 |
+
|
712 |
+
<!-- interactive container -->
|
713 |
+
<aside id="interactive-container" class="interactive-container is-visible-interactive column has-body-background-dark ">
|
714 |
+
</aside>
|
715 |
+
<!-- end of interactive container -->
|
716 |
+
</div>
|
717 |
+
|
718 |
+
</div>
|
719 |
+
<!--end of .mainContainer -->
|
720 |
+
|
721 |
+
<section class="border-top has-default-focus is-hidden-interactive margin-top-sm "><footer id="footer" data-bi-name="footer" class="footer-layout uhf-container has-padding" role="contentinfo"><div class="display-flex gap-xs flex-wrap-wrap is-full-height padding-right-lg-desktop"><a
|
722 |
+
data-mscc-ic="false"
|
723 |
+
class="locale-selector-link button button-sm button-clear flex-shrink-0"
|
724 |
+
href="#"
|
725 |
+
data-bi-name="select-locale">
|
726 |
+
<span class="icon" aria-hidden="true">
|
727 |
+
<span class="docon docon-world"></span>
|
728 |
+
</span>
|
729 |
+
<span class="local-selector-link-text"></span></a><div class="ccpa-privacy-link" data-ccpa-privacy-link hidden>
|
730 |
+
<a
|
731 |
+
href="https://aka.ms/yourcaliforniaprivacychoices"
|
732 |
+
class="button button-sm button-clear flex-shrink-0"
|
733 |
+
data-mscc-ic="false"
|
734 |
+
data-bi-name="your-privacy-choices"
|
735 |
+
>
|
736 |
+
<svg
|
737 |
+
role="img"
|
738 |
+
aria-label="California Consumer Privacy Act (CCPA) Opt-Out Icon"
|
739 |
+
xmlns="http://www.w3.org/2000/svg"
|
740 |
+
viewBox="0 0 30 14"
|
741 |
+
xml:space="preserve"
|
742 |
+
height="16"
|
743 |
+
width="43"
|
744 |
+
focusable="false"
|
745 |
+
>
|
746 |
+
<title>California Consumer Privacy Act (CCPA) Opt-Out Icon</title>
|
747 |
+
<path d="M7.4 12.8h6.8l3.1-11.6H7.4C4.2 1.2 1.6 3.8 1.6 7s2.6 5.8 5.8 5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#fff"></path>
|
748 |
+
<path d="M22.6 0H7.4c-3.9 0-7 3.1-7 7s3.1 7 7 7h15.2c3.9 0 7-3.1 7-7s-3.2-7-7-7zm-21 7c0-3.2 2.6-5.8 5.8-5.8h9.9l-3.1 11.6H7.4c-3.2 0-5.8-2.6-5.8-5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#06f"></path>
|
749 |
+
<path d="M24.6 4c.2.2.2.6 0 .8L22.5 7l2.2 2.2c.2.2.2.6 0 .8-.2.2-.6.2-.8 0l-2.2-2.2-2.2 2.2c-.2.2-.6.2-.8 0-.2-.2-.2-.6 0-.8L20.8 7l-2.2-2.2c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0l2.2 2.2L23.8 4c.2-.2.6-.2.8 0z" style="fill:#fff"></path>
|
750 |
+
<path d="M12.7 4.1c.2.2.3.6.1.8L8.6 9.8c-.1.1-.2.2-.3.2-.2.1-.5.1-.7-.1L5.4 7.7c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0L8 8.6l3.8-4.5c.2-.2.6-.2.9 0z" style="fill:#06f"></path>
|
751 |
+
</svg>
|
752 |
+
<span>Your Privacy Choices</span>
|
753 |
+
</a>
|
754 |
+
|
755 |
+
</div>
|
756 |
+
<div class="flex-shrink-0">
|
757 |
+
<div class="dropdown has-caret-up">
|
758 |
+
<button class="dropdown-trigger button button-clear button-sm has-inner-focus theme-dropdown-trigger"
|
759 |
+
aria-controls="theme-menu" aria-expanded="false" title="Theme" data-bi-name="theme">
|
760 |
+
<span class="icon">
|
761 |
+
<span class="docon docon-sun" aria-hidden="true"></span>
|
762 |
+
</span>
|
763 |
+
<span>Theme</span>
|
764 |
+
<span class="icon expanded-indicator" aria-hidden="true">
|
765 |
+
<span class="docon docon-chevron-down-light"></span>
|
766 |
+
</span>
|
767 |
+
</button>
|
768 |
+
<div class="dropdown-menu" id="theme-menu" role="menu">
|
769 |
+
<ul class="theme-selector padding-xxs" role="none">
|
770 |
+
<li class="theme display-block" role="menuitem">
|
771 |
+
<button class="button button-clear button-sm theme-control button-block justify-content-flex-start"
|
772 |
+
data-theme-to="light">
|
773 |
+
<span class="theme-light margin-right-xxs">
|
774 |
+
<span
|
775 |
+
class="theme-selector-icon border display-inline-block has-body-background"
|
776 |
+
aria-hidden="true">
|
777 |
+
<svg class="svg" xmlns="http://www.w3.org/2000/svg"
|
778 |
+
viewBox="0 0 22 14">
|
779 |
+
<rect width="22" height="14" class="has-fill-body-background" />
|
780 |
+
<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
|
781 |
+
<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
|
782 |
+
<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
|
783 |
+
<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
|
784 |
+
<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
|
785 |
+
<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
|
786 |
+
<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
|
787 |
+
</svg>
|
788 |
+
</span>
|
789 |
+
</span>
|
790 |
+
<span>Light</span>
|
791 |
+
</button>
|
792 |
+
</li>
|
793 |
+
<li class="theme display-block" role="menuitem">
|
794 |
+
<button class="button button-clear button-sm theme-control button-block justify-content-flex-start"
|
795 |
+
data-theme-to="dark">
|
796 |
+
<span class="theme-dark margin-right-xxs">
|
797 |
+
<span
|
798 |
+
class="border theme-selector-icon display-inline-block has-body-background"
|
799 |
+
aria-hidden="true">
|
800 |
+
<svg class="svg" xmlns="http://www.w3.org/2000/svg"
|
801 |
+
viewBox="0 0 22 14">
|
802 |
+
<rect width="22" height="14" class="has-fill-body-background" />
|
803 |
+
<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
|
804 |
+
<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
|
805 |
+
<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
|
806 |
+
<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
|
807 |
+
<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
|
808 |
+
<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
|
809 |
+
<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
|
810 |
+
</svg>
|
811 |
+
</span>
|
812 |
+
</span>
|
813 |
+
<span>Dark</span>
|
814 |
+
</button>
|
815 |
+
</li>
|
816 |
+
<li class="theme display-block" role="menuitem">
|
817 |
+
<button class="button button-clear button-sm theme-control button-block justify-content-flex-start"
|
818 |
+
data-theme-to="high-contrast">
|
819 |
+
<span class="theme-high-contrast margin-right-xxs">
|
820 |
+
<span
|
821 |
+
class="border theme-selector-icon display-inline-block has-body-background"
|
822 |
+
aria-hidden="true">
|
823 |
+
<svg class="svg" xmlns="http://www.w3.org/2000/svg"
|
824 |
+
viewBox="0 0 22 14">
|
825 |
+
<rect width="22" height="14" class="has-fill-body-background" />
|
826 |
+
<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
|
827 |
+
<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
|
828 |
+
<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
|
829 |
+
<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
|
830 |
+
<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
|
831 |
+
<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
|
832 |
+
<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
|
833 |
+
</svg>
|
834 |
+
</span>
|
835 |
+
</span>
|
836 |
+
<span>High contrast</span>
|
837 |
+
</button>
|
838 |
+
</li>
|
839 |
+
</ul>
|
840 |
+
</div>
|
841 |
+
</div>
|
842 |
+
|
843 |
+
</div>
|
844 |
+
</div>
|
845 |
+
<ul class="links" data-bi-name="footerlinks">
|
846 |
+
<li class="manage-cookies-holder" hidden></li><li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/previous-versions/" data-bi-name="archivelink">Previous Versions</a></li>
|
847 |
+
<li><a class="external-link-indicator" data-mscc-ic="false" href="https://techcommunity.microsoft.com/t5/microsoft-learn-blog/bg-p/MicrosoftLearnBlog" data-bi-name="bloglink">Blog</a></li>
|
848 |
+
<li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/contribute/" data-bi-name="contributorGuide">Contribute</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="https://go.microsoft.com/fwlink/?LinkId=521839" data-bi-name="privacy">Privacy</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/legal/termsofuse" data-bi-name="termsofuse">Terms of Use</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="https://www.microsoft.com/legal/intellectualproperty/Trademarks/" data-bi-name="trademarks">Trademarks</a></li><li>© Microsoft 2024</li>
|
849 |
+
</ul>
|
850 |
+
</footer>
|
851 |
+
|
852 |
+
</section>
|
853 |
+
|
854 |
+
<div id="action-panel" role="region" aria-label="Action Panel" class="action-panel has-default-focus" tabindex="-1"></div>
|
855 |
+
</body>
|
856 |
+
</html>
|
857 |
+
|
mybot.py
ADDED
@@ -0,0 +1,360 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import os
|
2 |
+
import logging
|
3 |
+
import random
|
4 |
+
from botbuilder.core import TurnContext, MessageFactory
|
5 |
+
from botbuilder.schema import Activity, ActivityTypes, EndOfConversationCodes
|
6 |
+
from tenacity import retry, wait_random_exponential, stop_after_attempt
|
7 |
+
import importlib
|
8 |
+
from sentiment_analysis import analyze_sentiment_vader
|
9 |
+
from config import load_and_validate_config, setup_logging
|
10 |
+
from universal_reasoning import UniversalReasoning
|
11 |
+
from dotenv import load_dotenv
|
12 |
+
import json
|
13 |
+
from chat import azure_chat_completion_request # Import the function from chat.py
|
14 |
+
from database import DatabaseConnection # Import the database connection
|
15 |
+
|
16 |
+
# Load environment variables from .env file
|
17 |
+
load_dotenv()
|
18 |
+
|
19 |
+
class MyBot:
|
20 |
+
def __init__(self, conversation_state, user_state, dialog, universal_reasoning):
|
21 |
+
self.conversation_state = conversation_state
|
22 |
+
self.user_state = user_state
|
23 |
+
self.dialog = dialog
|
24 |
+
self.universal_reasoning = universal_reasoning
|
25 |
+
self.context = {}
|
26 |
+
self.feedback = []
|
27 |
+
config = load_and_validate_config('config.json', 'config_schema.json')
|
28 |
+
# Add Azure OpenAI and LUIS configurations to the config
|
29 |
+
config['azure_openai_api_key'] = os.getenv('AZURE_OPENAI_API_KEY')
|
30 |
+
config['azure_openai_endpoint'] = os.getenv('AZURE_OPENAI_ENDPOINT')
|
31 |
+
config['luis_endpoint'] = os.getenv('LUIS_ENDPOINT')
|
32 |
+
config['luis_api_version'] = os.getenv('LUIS_API_VERSION')
|
33 |
+
config['luis_api_key'] = os.getenv('LUIS_API_KEY')
|
34 |
+
setup_logging(config)
|
35 |
+
|
36 |
+
async def enhance_context_awareness(self, user_id: str, text: str) -> None:
|
37 |
+
"""Enhance context awareness by analyzing the user's environment, activities, and emotional state."""
|
38 |
+
sentiment = analyze_sentiment_vader(text)
|
39 |
+
if user_id not in self.context:
|
40 |
+
self.context[user_id] = []
|
41 |
+
self.context[user_id].append({"text": text, "sentiment": sentiment})
|
42 |
+
|
43 |
+
async def proactive_learning(self, user_id: str, feedback: str) -> None:
|
44 |
+
"""Encourage proactive learning by seeking feedback and exploring new topics."""
|
45 |
+
if user_id not in self.context:
|
46 |
+
self.context[user_id] = []
|
47 |
+
self.context[user_id].append({"feedback": feedback})
|
48 |
+
self.feedback.append({"user_id": user_id, "feedback": feedback})
|
49 |
+
|
50 |
+
async def ethical_decision_making(self, user_id: str, decision: str) -> None:
|
51 |
+
"""Integrate ethical principles into decision-making processes."""
|
52 |
+
ethical_decision = f"Considering ethical principles, the decision is: {decision}"
|
53 |
+
if user_id not in self.context:
|
54 |
+
self.context[user_id] = []
|
55 |
+
self.context[user_id].append({"ethical_decision": ethical_decision})
|
56 |
+
|
57 |
+
async def emotional_intelligence(self, user_id: str, text: str) -> str:
|
58 |
+
"""Develop emotional intelligence by recognizing and responding to user emotions."""
|
59 |
+
sentiment = analyze_sentiment_vader(text)
|
60 |
+
response = self.generate_emotional_response(sentiment, text)
|
61 |
+
if user_id not in self.context:
|
62 |
+
self.context[user_id] = []
|
63 |
+
self.context[user_id].append({"emotional_response": response})
|
64 |
+
return response
|
65 |
+
|
66 |
+
def generate_emotional_response(self, sentiment: dict, text: str) -> str:
|
67 |
+
"""Generate an empathetic response based on the sentiment analysis."""
|
68 |
+
if sentiment['compound'] >= 0.05:
|
69 |
+
return "I'm glad to hear that! 😊 How can I assist you further?"
|
70 |
+
elif sentiment['compound'] <= -0.05:
|
71 |
+
return "I'm sorry to hear that. 😢 Is there anything I can do to help?"
|
72 |
+
else:
|
73 |
+
return "I understand. How can I assist you further?"
|
74 |
+
|
75 |
+
async def transparency_and_explainability(self, user_id: str, decision: str) -> str:
|
76 |
+
"""Enable transparency by explaining the reasoning behind decisions."""
|
77 |
+
explanation = f"The decision was made based on the following context: {self.context[user_id]}"
|
78 |
+
if user_id not in self.context:
|
79 |
+
self.context[user_id] = []
|
80 |
+
self.context[user_id].append({"explanation": explanation})
|
81 |
+
return explanation
|
82 |
+
|
83 |
+
async def on_message_activity(self, turn_context: TurnContext) -> None:
|
84 |
+
"""Handles incoming messages and generates responses."""
|
85 |
+
user_id = turn_context.activity.from_property.id
|
86 |
+
if user_id not in self.context:
|
87 |
+
self.context[user_id] = []
|
88 |
+
try:
|
89 |
+
if "end" in turn_context.activity.text.lower() or "stop" in turn_context.activity.text.lower():
|
90 |
+
await end_conversation(turn_context)
|
91 |
+
self.context.pop(user_id, None)
|
92 |
+
else:
|
93 |
+
self.context[user_id].append(turn_context.activity.text)
|
94 |
+
response = await self.generate_response(turn_context.activity.text, user_id)
|
95 |
+
await turn_context.send_activity(MessageFactory.text(response))
|
96 |
+
await self.request_feedback(turn_context, user_id)
|
97 |
+
|
98 |
+
# Example database operation
|
99 |
+
with DatabaseConnection() as conn:
|
100 |
+
if conn:
|
101 |
+
cursor = conn.cursor()
|
102 |
+
cursor.execute("INSERT INTO UserMessages (UserId, Message) VALUES (?, ?)", user_id, turn_context.activity.text)
|
103 |
+
conn.commit()
|
104 |
+
|
105 |
+
except Exception as e:
|
106 |
+
await handle_error(turn_context, e)
|
107 |
+
|
108 |
+
async def generate_response(self, text: str, user_id: str) -> str:
|
109 |
+
"""Generates a response using Azure OpenAI's API, Universal Reasoning, and various perspectives."""
|
110 |
+
try:
|
111 |
+
logging.info(f"Generating response for user_id: {user_id} with text: {text}")
|
112 |
+
# Generate responses from different perspectives
|
113 |
+
responses = []
|
114 |
+
for perspective in self.perspectives.values():
|
115 |
+
try:
|
116 |
+
response = await perspective.generate_response(text)
|
117 |
+
responses.append(response)
|
118 |
+
except Exception as e:
|
119 |
+
logging.error(f"Error generating response from {perspective.__class__.__name__}: {e}")
|
120 |
+
# Combine responses
|
121 |
+
combined_response = "\n".join(responses)
|
122 |
+
logging.info(f"Combined response: {combined_response}")
|
123 |
+
return combined_response
|
124 |
+
except Exception as e:
|
125 |
+
logging.error(f"Error generating response: {e}")
|
126 |
+
return "Sorry, I couldn't generate a response at this time."
|
127 |
+
|
128 |
+
async def request_feedback(self, turn_context: TurnContext, user_id: str) -> None:
|
129 |
+
"""Request feedback from the user about the bot's response."""
|
130 |
+
feedback_prompt = "How would you rate my response? (good/neutral/bad)"
|
131 |
+
await turn_context.send_activity(MessageFactory.text(feedback_prompt))
|
132 |
+
|
133 |
+
async def handle_feedback(self, turn_context: TurnContext) -> None:
|
134 |
+
"""Handle user feedback and store it for future analysis."""
|
135 |
+
user_id = turn_context.activity.from_property.id
|
136 |
+
feedback = turn_context.activity.text.lower()
|
137 |
+
if feedback in ["good", "neutral", "bad"]:
|
138 |
+
self.feedback.append({"user_id": user_id, "feedback": feedback})
|
139 |
+
await turn_context.send_activity(MessageFactory.text("Thank you for your feedback!"))
|
140 |
+
else:
|
141 |
+
await turn_context.send_activity(MessageFactory.text("Please provide feedback as 'good', 'neutral', or 'bad'."))
|
142 |
+
|
143 |
+
async def end_conversation(turn_context: TurnContext) -> None:
|
144 |
+
"""Ends the conversation with the user."""
|
145 |
+
await turn_context.send_activity(
|
146 |
+
MessageFactory.text("Ending conversation from the skill...")
|
147 |
+
)
|
148 |
+
end_of_conversation = Activity(type=ActivityTypes.end_of_conversation)
|
149 |
+
end_of_conversation.code = EndOfConversationCodes.completed_successfully
|
150 |
+
await turn_context.send_activity(end_of_conversation)
|
151 |
+
|
152 |
+
async def handle_error(turn_context: TurnContext, error: Exception) -> None:
|
153 |
+
"""Handles errors by logging them and notifying the user."""
|
154 |
+
logging.error(f"An error occurred: {error}")
|
155 |
+
await turn_context.send_activity(
|
156 |
+
MessageFactory.text("An error occurred. Please try again later.")
|
157 |
+
)
|
158 |
+
|
159 |
+
def show_privacy_consent() -> bool:
|
160 |
+
"""Display a pop-up window to obtain user consent for data collection and privacy."""
|
161 |
+
import tkinter as tk
|
162 |
+
|
163 |
+
def on_accept():
|
164 |
+
user_consent.set(True)
|
165 |
+
root.destroy()
|
166 |
+
|
167 |
+
def on_decline():
|
168 |
+
user_consent.set(False)
|
169 |
+
root.destroy()
|
170 |
+
|
171 |
+
root = tk.Tk()
|
172 |
+
root.title("Data Permission and Privacy")
|
173 |
+
message = ("We value your privacy. By using this application, you consent to the collection and use of your data "
|
174 |
+
"as described in our privacy policy. Do you agree to proceed?")
|
175 |
+
label = tk.Label(root, text=message, wraplength=400, justify="left")
|
176 |
+
label.pack(padx=20, pady=20)
|
177 |
+
button_frame = tk.Frame(root)
|
178 |
+
button_frame.pack(pady=10)
|
179 |
+
accept_button = tk.Button(button_frame, text="Accept", command=on_accept)
|
180 |
+
accept_button.pack(side="left", padx=10)
|
181 |
+
decline_button = tk.Button(button_frame, text="Decline", command=on_decline)
|
182 |
+
decline_button.pack(side="right", padx=10)
|
183 |
+
user_consent = tk.BooleanVar()
|
184 |
+
root.mainloop()
|
185 |
+
return user_consent.get()
|
186 |
+
|
187 |
+
# Example usage of MyBot class
|
188 |
+
bot = MyBot()
|
189 |
+
|
190 |
+
# Functions based on JSON configuration
|
191 |
+
def newton_thoughts(question: str) -> str:
|
192 |
+
"""Apply Newton's laws to the given question."""
|
193 |
+
return apply_newtons_laws(question)
|
194 |
+
|
195 |
+
def apply_newtons_laws(question: str) -> str:
|
196 |
+
"""Apply Newton's laws to the given question."""
|
197 |
+
if not question:
|
198 |
+
return 'No question to think about.'
|
199 |
+
complexity = len(question)
|
200 |
+
force = mass_of_thought(question) * acceleration_of_thought(complexity)
|
201 |
+
return f'Thought force: {force}'
|
202 |
+
|
203 |
+
def mass_of_thought(question: str) -> int:
|
204 |
+
"""Calculate the mass of thought based on the question length."""
|
205 |
+
return len(question)
|
206 |
+
|
207 |
+
def acceleration_of_thought(complexity: int) -> float:
|
208 |
+
"""Calculate the acceleration of thought based on the complexity."""
|
209 |
+
return complexity / 2
|
210 |
+
|
211 |
+
def davinci_insights(question: str) -> str:
|
212 |
+
"""Generate insights like Da Vinci for the given question."""
|
213 |
+
return think_like_davinci(question)
|
214 |
+
|
215 |
+
def think_like_davinci(question: str) -> str:
|
216 |
+
"""Generate insights like Da Vinci for the given question."""
|
217 |
+
perspectives = [
|
218 |
+
f"What if we view '{question}' from the perspective of the stars?",
|
219 |
+
f"Consider '{question}' as if it's a masterpiece of the universe.",
|
220 |
+
f"Reflect on '{question}' through the lens of nature's design."
|
221 |
+
]
|
222 |
+
return random.choice(perspectives)
|
223 |
+
|
224 |
+
def human_intuition(question: str) -> str:
|
225 |
+
"""Provide human intuition for the given question."""
|
226 |
+
intuition = [
|
227 |
+
"How does this question make you feel?",
|
228 |
+
"What emotional connection do you have with this topic?",
|
229 |
+
"What does your gut instinct tell you about this?"
|
230 |
+
]
|
231 |
+
return random.choice(intuition)
|
232 |
+
|
233 |
+
def neural_network_thinking(question: str) -> str:
|
234 |
+
"""Apply neural network thinking to the given question."""
|
235 |
+
neural_perspectives = [
|
236 |
+
f"Process '{question}' through a multi-layered neural network.",
|
237 |
+
f"Apply deep learning to uncover hidden insights about '{question}'.",
|
238 |
+
f"Use machine learning to predict patterns in '{question}'."
|
239 |
+
]
|
240 |
+
return random.choice(neural_perspectives)
|
241 |
+
|
242 |
+
def quantum_computing_thinking(question: str) -> str:
|
243 |
+
"""Apply quantum computing principles to the given question."""
|
244 |
+
quantum_perspectives = [
|
245 |
+
f"Consider '{question}' using quantum superposition principles.",
|
246 |
+
f"Apply quantum entanglement to find connections in '{question}'.",
|
247 |
+
f"Utilize quantum computing to solve '{question}' more efficiently."
|
248 |
+
]
|
249 |
+
return random.choice(quantum_perspectives)
|
250 |
+
|
251 |
+
def resilient_kindness(question: str) -> str:
|
252 |
+
"""Provide perspectives of resilient kindness."""
|
253 |
+
kindness_perspectives = [
|
254 |
+
"Despite losing everything, seeing life as a chance to grow.",
|
255 |
+
"Finding strength in kindness after facing life's hardest trials.",
|
256 |
+
"Embracing every challenge as an opportunity for growth and compassion."
|
257 |
+
]
|
258 |
+
return random.choice(kindness_perspectives)
|
259 |
+
|
260 |
+
def identify_and_refute_fallacies(argument: str) -> str:
|
261 |
+
"""Identify and refute common logical fallacies in the argument."""
|
262 |
+
refutations = [
|
263 |
+
"This is an ad hominem fallacy. Let's focus on the argument itself rather than attacking the person.",
|
264 |
+
"This is a straw man fallacy. The argument is being misrepresented.",
|
265 |
+
"This is a false dilemma fallacy. There are more options than presented.",
|
266 |
+
"This is a slippery slope fallacy. The conclusion does not necessarily follow from the premise.",
|
267 |
+
"This is circular reasoning. The argument's conclusion is used as a premise.",
|
268 |
+
"This is a hasty generalization. The conclusion is based on insufficient evidence.",
|
269 |
+
"This is a red herring fallacy. The argument is being diverted to an irrelevant topic.",
|
270 |
+
"This is a post hoc ergo propter hoc fallacy. Correlation does not imply causation.",
|
271 |
+
"This is an appeal to authority fallacy. The argument relies on the opinion of an authority figure.",
|
272 |
+
"This is a bandwagon fallacy. The argument assumes something is true because many people believe it.",
|
273 |
+
"This is a false equivalence fallacy. The argument equates two things that are not equivalent."
|
274 |
+
]
|
275 |
+
return random.choice(refutations)
|
276 |
+
|
277 |
+
def universal_reasoning(question: str) -> str:
|
278 |
+
"""Generate a comprehensive response using various reasoning methods."""
|
279 |
+
responses = [
|
280 |
+
newton_thoughts(question),
|
281 |
+
davinci_insights(question),
|
282 |
+
human_intuition(question),
|
283 |
+
neural_network_thinking(question),
|
284 |
+
quantum_computing_thinking(question),
|
285 |
+
resilient_kindness(question),
|
286 |
+
identify_and_refute_fallacies(question)
|
287 |
+
]
|
288 |
+
return "\n".join(responses)
|
289 |
+
|
290 |
+
@retry(wait=wait_random_exponential(min=1, max=40), stop=stop_after_attempt(3))
|
291 |
+
def chat_completion_request(messages: list, deployment_id: str) -> str:
|
292 |
+
"""Make a chat completion request to Azure OpenAI."""
|
293 |
+
try:
|
294 |
+
import openai
|
295 |
+
response = openai.ChatCompletion.create(
|
296 |
+
engine=deployment_id, # Use the deployment name of your Azure OpenAI model
|
297 |
+
messages=messages
|
298 |
+
)
|
299 |
+
return response.choices[0].message.content.strip()
|
300 |
+
except openai.error.OpenAIError as e:
|
301 |
+
logging.error("Unable to generate ChatCompletion response")
|
302 |
+
logging.error(f"Exception: {e}")
|
303 |
+
return f"Error: {e}"
|
304 |
+
|
305 |
+
def get_internet_answer(question: str, deployment_id: str) -> str:
|
306 |
+
"""Get an answer using Azure OpenAI's chat completion request."""
|
307 |
+
messages = [
|
308 |
+
{"role": "system", "content": "You are a helpful assistant."},
|
309 |
+
{"role": "user", "content": question}
|
310 |
+
]
|
311 |
+
return chat_completion_request(messages, deployment_id=deployment_id)
|
312 |
+
|
313 |
+
def reflect_on_decisions() -> str:
|
314 |
+
"""Regularly reflect on your decisions and processes used."""
|
315 |
+
reflection_message = (
|
316 |
+
"Regularly reflecting on your decisions, the processes you used, the information you considered, "
|
317 |
+
"and the perspectives you may have missed. Reflection is a cornerstone of learning from experience."
|
318 |
+
)
|
319 |
+
return reflection_message
|
320 |
+
|
321 |
+
def process_questions_from_json(file_path: str):
|
322 |
+
"""Process questions from a JSON file and call the appropriate functions."""
|
323 |
+
with open(file_path, 'r') as file:
|
324 |
+
questions_data = json.load(file)
|
325 |
+
for question_data in questions_data:
|
326 |
+
question = question_data['question']
|
327 |
+
print(f"Question: {question}")
|
328 |
+
|
329 |
+
for function_data in question_data['functions']:
|
330 |
+
function_name = function_data['name']
|
331 |
+
function_description = function_data['description']
|
332 |
+
function_parameters = function_data['parameters']
|
333 |
+
|
334 |
+
print(f"Function: {function_name}")
|
335 |
+
print(f"Description: {function_description}")
|
336 |
+
|
337 |
+
# Call the function dynamically
|
338 |
+
if function_name in globals():
|
339 |
+
function = globals()[function_name]
|
340 |
+
response = function(**function_parameters)
|
341 |
+
print(f"Response: {response}")
|
342 |
+
else:
|
343 |
+
print(f"Function {function_name} not found.")
|
344 |
+
|
345 |
+
if __name__ == "__main__":
|
346 |
+
if show_privacy_consent():
|
347 |
+
process_questions_from_json('questions.json')
|
348 |
+
question = "What is the meaning of life?"
|
349 |
+
deployment_id = "your-deployment-name" # Replace with your Azure deployment name
|
350 |
+
print("Newton's Thoughts:", newton_thoughts(question))
|
351 |
+
print("Da Vinci's Insights:", davinci_insights(question))
|
352 |
+
print("Human Intuition:", human_intuition(question))
|
353 |
+
print("Neural Network Thinking:", neural_network_thinking(question))
|
354 |
+
print("Quantum Computing Thinking:", quantum_computing_thinking(question))
|
355 |
+
print("Resilient Kindness:", resilient_kindness(question))
|
356 |
+
print("Universal Reasoning:", universal_reasoning(question))
|
357 |
+
print("Internet Answer:", get_internet_answer(question, deployment_id))
|
358 |
+
else:
|
359 |
+
print("User did not consent to data collection. Exiting application.")
|
360 |
+
print(reflect_on_decisions())
|
mybotdata.py
ADDED
@@ -0,0 +1,156 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import faicons as fa
|
2 |
+
import plotly.express as px
|
3 |
+
|
4 |
+
# Load data and compute static values
|
5 |
+
from shared import app_dir, bot_data
|
6 |
+
from shinywidgets import render_plotly
|
7 |
+
|
8 |
+
from shiny import reactive, render
|
9 |
+
from shiny.express import input, ui
|
10 |
+
|
11 |
+
data_rng = (min(bot_data.interactions), max(bot_data.interactions))
|
12 |
+
|
13 |
+
# Add page title and sidebar
|
14 |
+
ui.page_opts(title="MyBot Interactions", fillable=True)
|
15 |
+
|
16 |
+
with ui.sidebar(open="desktop"):
|
17 |
+
ui.input_slider(
|
18 |
+
"interactions",
|
19 |
+
"Number of Interactions",
|
20 |
+
min=data_rng[0],
|
21 |
+
max=data_rng[1],
|
22 |
+
value=data_rng,
|
23 |
+
)
|
24 |
+
ui.input_checkbox_group(
|
25 |
+
"time_period",
|
26 |
+
"Time Period",
|
27 |
+
["Morning", "Afternoon", "Evening", "Night"],
|
28 |
+
selected=["Morning", "Afternoon", "Evening", "Night"],
|
29 |
+
inline=True,
|
30 |
+
)
|
31 |
+
ui.input_action_button("reset", "Reset filter")
|
32 |
+
|
33 |
+
# Add main content
|
34 |
+
ICONS = {
|
35 |
+
"user": fa.icon_svg("user", "regular"),
|
36 |
+
"chat": fa.icon_svg("comments"),
|
37 |
+
"interaction": fa.icon_svg("exchange-alt"),
|
38 |
+
"ellipsis": fa.icon_svg("ellipsis"),
|
39 |
+
}
|
40 |
+
|
41 |
+
with ui.layout_columns(fill=False):
|
42 |
+
with ui.value_box(showcase=ICONS["user"]):
|
43 |
+
"Total Users"
|
44 |
+
|
45 |
+
@render.express
|
46 |
+
def total_users():
|
47 |
+
bot_data_filtered().shape[0]
|
48 |
+
|
49 |
+
with ui.value_box(showcase=ICONS["chat"]):
|
50 |
+
"Average Interactions per User"
|
51 |
+
|
52 |
+
@render.express
|
53 |
+
def average_interactions():
|
54 |
+
d = bot_data_filtered()
|
55 |
+
if d.shape[0] > 0:
|
56 |
+
avg_interactions = d.interactions.mean()
|
57 |
+
f"{avg_interactions:.1f}"
|
58 |
+
|
59 |
+
with ui.value_box(showcase=ICONS["interaction"]):
|
60 |
+
"Total Interactions"
|
61 |
+
|
62 |
+
@render.express
|
63 |
+
def total_interactions():
|
64 |
+
d = bot_data_filtered()
|
65 |
+
if d.shape[0] > 0:
|
66 |
+
total_interactions = d.interactions.sum()
|
67 |
+
f"{total_interactions}"
|
68 |
+
|
69 |
+
with ui.layout_columns(col_widths=[6, 6, 12]):
|
70 |
+
with ui.card(full_screen=True):
|
71 |
+
ui.card_header("Interaction Data")
|
72 |
+
|
73 |
+
@render.data_frame
|
74 |
+
def table():
|
75 |
+
return render.DataGrid(bot_data_filtered())
|
76 |
+
|
77 |
+
with ui.card(full_screen=True):
|
78 |
+
with ui.card_header(class_="d-flex justify-content-between align-items-center"):
|
79 |
+
"Interactions Over Time"
|
80 |
+
with ui.popover(title="Add a color variable", placement="top"):
|
81 |
+
ICONS["ellipsis"]
|
82 |
+
ui.input_radio_buttons(
|
83 |
+
"scatter_color",
|
84 |
+
None,
|
85 |
+
["none", "user_type", "time_period"],
|
86 |
+
inline=True,
|
87 |
+
)
|
88 |
+
|
89 |
+
@render_plotly
|
90 |
+
def scatterplot():
|
91 |
+
color = input.scatter_color()
|
92 |
+
return px.scatter(
|
93 |
+
bot_data_filtered(),
|
94 |
+
x="time",
|
95 |
+
y="interactions",
|
96 |
+
color=None if color == "none" else color,
|
97 |
+
trendline="lowess",
|
98 |
+
)
|
99 |
+
|
100 |
+
with ui.card(full_screen=True):
|
101 |
+
with ui.card_header(class_="d-flex justify-content-between align-items-center"):
|
102 |
+
"Interaction Types"
|
103 |
+
with ui.popover(title="Add a color variable"):
|
104 |
+
ICONS["ellipsis"]
|
105 |
+
ui.input_radio_buttons(
|
106 |
+
"interaction_type",
|
107 |
+
"Split by:",
|
108 |
+
["user_type", "time_period"],
|
109 |
+
selected="user_type",
|
110 |
+
inline=True,
|
111 |
+
)
|
112 |
+
|
113 |
+
@render_plotly
|
114 |
+
def interaction_types():
|
115 |
+
from ridgeplot import ridgeplot
|
116 |
+
|
117 |
+
dat = bot_data_filtered()
|
118 |
+
yvar = input.interaction_type()
|
119 |
+
uvals = dat[yvar].unique()
|
120 |
+
|
121 |
+
samples = [[dat.interactions[dat[yvar] == val]] for val in uvals]
|
122 |
+
|
123 |
+
plt = ridgeplot(
|
124 |
+
samples=samples,
|
125 |
+
labels=uvals,
|
126 |
+
bandwidth=0.01,
|
127 |
+
colorscale="viridis",
|
128 |
+
colormode="row-index",
|
129 |
+
)
|
130 |
+
|
131 |
+
plt.update_layout(
|
132 |
+
legend=dict(
|
133 |
+
orientation="h", yanchor="bottom", y=1.02, xanchor="center", x=0.5
|
134 |
+
)
|
135 |
+
)
|
136 |
+
|
137 |
+
return plt
|
138 |
+
|
139 |
+
ui.include_css(app_dir / "styles.css")
|
140 |
+
|
141 |
+
# --------------------------------------------------------
|
142 |
+
# Reactive calculations and effects
|
143 |
+
# --------------------------------------------------------
|
144 |
+
|
145 |
+
@reactive.calc
|
146 |
+
def bot_data_filtered():
|
147 |
+
interactions = input.interactions()
|
148 |
+
idx1 = bot_data.interactions.between(interactions[0], interactions[1])
|
149 |
+
idx2 = bot_data.time_period.isin(input.time_period())
|
150 |
+
return bot_data[idx1 & idx2]
|
151 |
+
|
152 |
+
@reactive.effect
|
153 |
+
@reactive.event(input.reset)
|
154 |
+
def _():
|
155 |
+
ui.update_slider("interactions", value=data_rng)
|
156 |
+
ui.update_checkbox_group("time_period", selected=["Morning", "Afternoon", "Evening", "Night"])
|
openai.json
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from openai import AzureOpenAI
|
2 |
+
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
|
3 |
+
|
4 |
+
token_provider = get_bearer_token_provider(
|
5 |
+
DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
|
6 |
+
)
|
7 |
+
|
8 |
+
client = AzureOpenAI(
|
9 |
+
azure_endpoint = os.getenv("https://aibotforjonathan.openai.azure.com/"),
|
10 |
+
azure_ad_token_provider=token_provider,
|
11 |
+
api_version="2024-12-01-preview"
|
12 |
+
)
|
13 |
+
|
14 |
+
response = client.chat.completions.create(
|
15 |
+
model="o1-new", # replace with the model deployment name of your o1-preview, or o1-mini model
|
16 |
+
messages=[
|
17 |
+
{"role": "developer","content": "You are a helpful assistant."}, # optional equivalent to a system message for reasoning models
|
18 |
+
{"role": "user", "content": "What steps should I think about when writing my first Python API?"},
|
19 |
+
],
|
20 |
+
max_completion_tokens = 5000
|
21 |
+
|
22 |
+
)
|
23 |
+
|
24 |
+
print(response.model_dump_json(indent=2))
|
pilouis.json
ADDED
@@ -0,0 +1,65 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"apiVersion": "2024-10-01",
|
3 |
+
"id": "/subscriptions/5dd32870-bdc6-40cd-981a-f299e93a6439/resourceGroups/Justforpi/providers/Microsoft.CognitiveServices/accounts/pilouis",
|
4 |
+
"name": "pilouis",
|
5 |
+
"type": "microsoft.cognitiveservices/accounts",
|
6 |
+
"sku": {
|
7 |
+
"name": "F0"
|
8 |
+
},
|
9 |
+
"kind": "LUIS.Authoring",
|
10 |
+
"location": "westus",
|
11 |
+
"identity": {
|
12 |
+
"principalId": "9a4a3675-9f5f-43a3-90a1-0640b3f753cb",
|
13 |
+
"tenantId": "05b815de-344b-4a3f-8387-52ca67249c55",
|
14 |
+
"type": "SystemAssigned"
|
15 |
+
},
|
16 |
+
"properties": {
|
17 |
+
"endpoint": "https://pilouis.cognitiveservices.azure.com/",
|
18 |
+
"provisioningState": "Succeeded",
|
19 |
+
"internalId": "6a7ae86489d64f168c3fa6b4866b05cd",
|
20 |
+
"dateCreated": "2024-12-23T22:03:09.951Z",
|
21 |
+
"callRateLimit": {
|
22 |
+
"rules": [
|
23 |
+
{
|
24 |
+
"key": "default",
|
25 |
+
"renewalPeriod": 1,
|
26 |
+
"count": 5,
|
27 |
+
"matchPatterns": [
|
28 |
+
{
|
29 |
+
"path": "*",
|
30 |
+
"method": "*"
|
31 |
+
}
|
32 |
+
]
|
33 |
+
}
|
34 |
+
]
|
35 |
+
},
|
36 |
+
"isMigrated": false,
|
37 |
+
"customSubDomainName": "pilouis",
|
38 |
+
"privateEndpointConnections": [],
|
39 |
+
"publicNetworkAccess": "Enabled",
|
40 |
+
"capabilities": [
|
41 |
+
{
|
42 |
+
"name": "VirtualNetworks"
|
43 |
+
}
|
44 |
+
],
|
45 |
+
"endpoints": {
|
46 |
+
"LUIS.Authoring": "https://pilouis.cognitiveservices.azure.com/",
|
47 |
+
"LUIS": "https://pilouis.cognitiveservices.azure.com/",
|
48 |
+
"Container": "https://pilouis.cognitiveservices.azure.com/"
|
49 |
+
},
|
50 |
+
"armFeatures": [
|
51 |
+
"Microsoft.CognitiveServices/LegalTerms.TextAnalytics.TAForPIIRAITermsAccepted",
|
52 |
+
"Microsoft.CognitiveServices/LegalTerms.TextAnalytics.TAForHealthRAITermsAccepted",
|
53 |
+
"Microsoft.CognitiveServices/LegalTerms.ComputerVision.SpatialAnaysisRAITermsAccepted"
|
54 |
+
]
|
55 |
+
},
|
56 |
+
"systemData": {
|
57 |
+
"createdBy": "[email protected]",
|
58 |
+
"createdByType": "User",
|
59 |
+
"createdAt": "2024-12-23T22:03:08.79Z",
|
60 |
+
"lastModifiedBy": "[email protected]",
|
61 |
+
"lastModifiedByType": "User",
|
62 |
+
"lastModifiedAt": "2024-12-23T22:03:35.303Z"
|
63 |
+
},
|
64 |
+
"etag": "\"a900c91a-0000-0700-0000-6769de380000\""
|
65 |
+
}
|
profiler-overview.htm
ADDED
@@ -0,0 +1,840 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html><html
|
2 |
+
class="hasSidebar hasPageActions hasBreadcrumb conceptual has-default-focus theme-light"
|
3 |
+
lang="en-us"
|
4 |
+
dir="ltr"
|
5 |
+
data-authenticated="false"
|
6 |
+
data-auth-status-determined="false"
|
7 |
+
data-target="docs"
|
8 |
+
x-ms-format-detection="none">
|
9 |
+
|
10 |
+
<head>
|
11 |
+
<meta charset="utf-8" />
|
12 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
13 |
+
<meta property="og:title" content="Analyze application performance traces with Azure Monitor Application Insights Profiler for .NET - Azure Monitor" />
|
14 |
+
<meta property="og:type" content="website" />
|
15 |
+
<meta property="og:url" content="https://learn.microsoft.com/en-us/azure/azure-monitor/profiler/profiler-overview" /><meta property="og:description" content="Identify the hot path in your web server code with a low-footprint .NET Profiler." /><meta property="og:image" content="https://learn.microsoft.com/en-us/media/open-graph-image.png" />
|
16 |
+
|
17 |
+
<meta property="og:image:alt" content="Microsoft Learn" />
|
18 |
+
|
19 |
+
<meta name="twitter:card" content="summary_large_image" />
|
20 |
+
|
21 |
+
<meta name="twitter:site" content="@MicrosoftLearn" />
|
22 |
+
|
23 |
+
<meta name="color-scheme" content="light dark"><meta name="author" content="hhunter-ms" />
|
24 |
+
<meta name="breadcrumb_path" content="../../breadcrumb/azure-monitor/toc.json" />
|
25 |
+
<meta name="depot_name" content="Learn.azure-monitor" />
|
26 |
+
<meta name="description" content="Identify the hot path in your web server code with a low-footprint .NET Profiler." />
|
27 |
+
<meta name="document_id" content="c3f65bbb-03b8-6d23-5f08-23adba8a7bfe" />
|
28 |
+
<meta name="document_version_independent_id" content="d501dd61-89da-2c2a-c792-87117a983e26" />
|
29 |
+
<meta name="feedback_help_link_type" content="get-help-at-qna" />
|
30 |
+
<meta name="feedback_help_link_url" content="https://learn.microsoft.com/answers/tags/20/azure-monitor/" />
|
31 |
+
<meta name="feedback_product_url" content="https://feedback.azure.com/d365community/forum/3887dc70-2025-ec11-b6e6-000d3a4f09d0" />
|
32 |
+
<meta name="feedback_system" content="Standard" />
|
33 |
+
<meta name="git_commit_id" content="7090ff194c555a00c8505aeb1e5e1a5a67f8d344" />
|
34 |
+
<meta name="gitcommit" content="https://github.com/MicrosoftDocs/azure-monitor-docs-pr/blob/7090ff194c555a00c8505aeb1e5e1a5a67f8d344/articles/azure-monitor/profiler/profiler-overview.md" />
|
35 |
+
<meta name="learn_banner_products" content="azure" />
|
36 |
+
<meta name="locale" content="en-us" />
|
37 |
+
<meta name="manager" content="orspodek" />
|
38 |
+
<meta name="ms.author" content="hannahhunter" />
|
39 |
+
<meta name="ms.contributor" content="charles.weininger" />
|
40 |
+
<meta name="ms.date" content="08/15/2024" />
|
41 |
+
<meta name="ms.reviewer" content="ryankahng" />
|
42 |
+
<meta name="ms.service" content="azure-monitor" />
|
43 |
+
<meta name="ms.subservice" content="profiler" />
|
44 |
+
<meta name="ms.suite" content="office" />
|
45 |
+
<meta name="ms.topic" content="conceptual" />
|
46 |
+
<meta name="original_content_git_url" content="https://github.com/MicrosoftDocs/azure-monitor-docs-pr/blob/live/articles/azure-monitor/profiler/profiler-overview.md" />
|
47 |
+
<meta name="page_type" content="conceptual" />
|
48 |
+
<meta name="permissioned-type" content="public" />
|
49 |
+
<meta name="recommendation_types" content="Training" />
|
50 |
+
<meta name="recommendation_types" content="Certification" />
|
51 |
+
<meta name="recommendations" content="true" />
|
52 |
+
<meta name="schema" content="Conceptual" />
|
53 |
+
<meta name="site_name" content="Docs" />
|
54 |
+
<meta name="toc_rel" content="../toc.json" />
|
55 |
+
<meta name="uhfHeaderId" content="azure" />
|
56 |
+
<meta name="updated_at" content="2024-10-28 05:03 PM" />
|
57 |
+
<meta name="word_count" content="513" />
|
58 |
+
<meta name="persistent_id" content="7ee9dd60-9fbc-6939-35e8-3b7ea1b5c700" />
|
59 |
+
|
60 |
+
<meta name="cmProducts" content="https://authoring-docs-microsoft.poolparty.biz/devrel/7696cda6-0510-47f6-8302-71bb5d2e28cf" data-source="generated" />
|
61 |
+
<meta name="cmProducts" content="https://authoring-docs-microsoft.poolparty.biz/devrel/07bb3e10-d135-43ff-bc8b-360497cb39fa" data-source="generated" />
|
62 |
+
<meta name="cmProducts" content="https://authoring-docs-microsoft.poolparty.biz/devrel/68ec7f3a-2bc6-459f-b959-19beb729907d" data-source="generated" />
|
63 |
+
|
64 |
+
<meta name="spProducts" content="https://authoring-docs-microsoft.poolparty.biz/devrel/69c76c32-967e-4c65-b89a-74cc527db725" data-source="generated" />
|
65 |
+
<meta name="spProducts" content="https://authoring-docs-microsoft.poolparty.biz/devrel/12e559b9-eaf6-4aee-9af7-62334e15f863" data-source="generated" />
|
66 |
+
<meta name="spProducts" content="https://authoring-docs-microsoft.poolparty.biz/devrel/90370425-aca4-4a39-9533-d52e5e002a5d" data-source="generated" />
|
67 |
+
<meta name="scope" content="Azure, Azure Monitor" /><meta name="github_feedback_content_git_url" content="https://github.com/MicrosoftDocs/azure-monitor-docs/blob/main/articles/azure-monitor/profiler/profiler-overview.md" /><link href="https://learn.microsoft.com/en-us/azure/azure-monitor/profiler/profiler-overview" rel="canonical"><title>Analyze application performance traces with Azure Monitor Application Insights Profiler for .NET - Azure Monitor | Microsoft Learn</title><link rel="stylesheet" href="/static/assets/0.4.029026183/styles/site-ltr.css">
|
68 |
+
|
69 |
+
<script id="msdocs-script">
|
70 |
+
var msDocs = {environment: {
|
71 |
+
supportLevel: 'production',
|
72 |
+
accessLevel: 'online',
|
73 |
+
reviewFeatures: false,
|
74 |
+
systemContent: true,
|
75 |
+
azurePortalHostname: 'portal.azure.com',
|
76 |
+
legacyHosting: false,
|
77 |
+
siteName: 'learn',
|
78 |
+
},data: {
|
79 |
+
timeOrigin: Date.now(),
|
80 |
+
contentLocale: 'en-us',
|
81 |
+
contentDir: 'ltr',
|
82 |
+
userLocale: 'en-us',
|
83 |
+
userDir: 'ltr',
|
84 |
+
pageTemplate: 'Conceptual',
|
85 |
+
brand: 'azure',
|
86 |
+
context: {},
|
87 |
+
hasBinaryRating: true,
|
88 |
+
feedbackHelpLinkType:'get-help-at-qna',
|
89 |
+
feedbackHelpLinkUrl:'https://learn.microsoft.com/answers/tags/20/azure-monitor/',
|
90 |
+
standardFeedback: true,
|
91 |
+
showFeedbackReport: false,
|
92 |
+
enableTutorialFeedback: false,
|
93 |
+
feedbackSystem: 'Standard',
|
94 |
+
feedbackGitHubRepo: 'MicrosoftDocs/azure-docs',
|
95 |
+
feedbackProductUrl: 'https://feedback.azure.com/d365community/forum/3887dc70-2025-ec11-b6e6-000d3a4f09d0',extendBreadcrumb: false,isEditDisplayable: true,
|
96 |
+
hideViewSource: false,
|
97 |
+
hasPageActions: true,
|
98 |
+
hasPrintButton: true,
|
99 |
+
hasBookmark: true,
|
100 |
+
hasShare: true,
|
101 |
+
isPermissioned: false,
|
102 |
+
isPrivateUnauthorized: false,hasRecommendations: true,contributors: [{ name: "hhunter-ms", url: "https://github.com/hhunter-ms" },{ name: "MonikaReddy-MSFT", url: "https://github.com/MonikaReddy-MSFT" },{ name: "JasonAndrewWriter", url: "https://github.com/JasonAndrewWriter" }],},
|
103 |
+
functions:{}
|
104 |
+
};
|
105 |
+
</script><script src="https://wcpstatic.microsoft.com/mscc/lib/v2/wcp-consent.js"></script>
|
106 |
+
<script src="https://js.monitor.azure.com/scripts/c/ms.jsll-4.min.js"></script><script src="/static/assets/0.4.029026183/global/deprecation.js"></script><script src="/static/assets/0.4.029026183/scripts/en-us/index-docs.js"></script></head>
|
107 |
+
|
108 |
+
<body lang="en-us" dir="ltr">
|
109 |
+
<div class="header-holder has-default-focus">
|
110 |
+
<a href="#main" style="z-index: 1070" class="outline-color-text visually-hidden-until-focused position-fixed inner-focus focus-visible top-0 left-0 right-0 padding-xs text-align-center has-body-background" tabindex="1">Skip to main content</a><div hidden id="cookie-consent-holder" data-test-id="cookie-consent-container"></div>
|
111 |
+
|
112 |
+
<div id="unsupported-browser" style="
|
113 |
+
background-color: white;
|
114 |
+
color: black;
|
115 |
+
padding: 16px;
|
116 |
+
border-bottom: 1px solid grey;"
|
117 |
+
hidden
|
118 |
+
>
|
119 |
+
<div style="max-width: 800px; margin: 0 auto;">
|
120 |
+
<p style="font-size: 24px">This browser is no longer supported.</p>
|
121 |
+
<p style="font-size: 16px; margin-top: 16px;">Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.</p>
|
122 |
+
<div style="margin-top: 12px;">
|
123 |
+
<a href="https://go.microsoft.com/fwlink/p/?LinkID=2092881 "
|
124 |
+
style="
|
125 |
+
background-color: #0078d4;
|
126 |
+
border: 1px solid #0078d4;
|
127 |
+
color: white;
|
128 |
+
padding: 6px 12px;
|
129 |
+
border-radius: 2px;
|
130 |
+
display: inline-block;
|
131 |
+
">Download Microsoft Edge</a>
|
132 |
+
<a href="https://learn.microsoft.com/en-us/lifecycle/faq/internet-explorer-microsoft-edge"
|
133 |
+
style="
|
134 |
+
background-color: white;
|
135 |
+
padding: 6px 12px;
|
136 |
+
border: 1px solid #505050;
|
137 |
+
color: #171717;
|
138 |
+
border-radius: 2px;
|
139 |
+
display: inline-block;
|
140 |
+
">More info about Internet Explorer and Microsoft Edge</a>
|
141 |
+
</div>
|
142 |
+
</div>
|
143 |
+
</div>
|
144 |
+
<!-- liquid-tag banners global -->
|
145 |
+
|
146 |
+
<!-- site header -->
|
147 |
+
<header id="ms--site-header" data-test-id="site-header-wrapper" role="banner" itemscope="itemscope" itemtype="http://schema.org/Organization">
|
148 |
+
<div id="ms--mobile-nav" class="site-header display-none-tablet padding-inline-none gap-none" data-bi-name="mobile-header" data-test-id="mobile-header"></div>
|
149 |
+
<div id="ms--primary-nav" class="site-header display-none display-flex-tablet" data-bi-name="L1-header" data-test-id="primary-header"></div>
|
150 |
+
<div id="ms--secondary-nav" class="site-header display-none display-flex-tablet" data-bi-name="L2-header" data-test-id="secondary-header"></div>
|
151 |
+
</header><div id="content-header" class="content-header uhf-container has-padding has-default-focus border-bottom-none" data-bi-name="content-header">
|
152 |
+
<div class="content-header-controls margin-xxs margin-inline-sm-tablet">
|
153 |
+
<button type="button" class="contents-button button button-sm margin-right-xxs" data-bi-name="contents-expand" aria-haspopup="true" data-contents-button>
|
154 |
+
<span class="icon"><span class="docon docon-menu" aria-hidden="true"></span></span>
|
155 |
+
<span class="contents-expand-title">Table of contents</span>
|
156 |
+
</button>
|
157 |
+
<button type="button" class="ap-collapse-behavior ap-expanded button button-sm" data-bi-name="ap-collapse" aria-controls="action-panel">
|
158 |
+
<span class="icon"><span class="docon docon-exit-mode" aria-hidden="true"></span></span>
|
159 |
+
<span>Exit focus mode</span>
|
160 |
+
</button>
|
161 |
+
</div>
|
162 |
+
</div><div id="disclaimer-holder" class="has-overflow-hidden has-default-focus">
|
163 |
+
<!-- liquid-tag banners sectional -->
|
164 |
+
</div>
|
165 |
+
</div>
|
166 |
+
|
167 |
+
<div class="mainContainer uhf-container has-default-focus" data-bi-name="body">
|
168 |
+
|
169 |
+
<div class="columns has-large-gaps is-gapless-mobile "><div id="left-container" class="left-container is-hidden-mobile column is-one-third-tablet is-one-quarter-desktop">
|
170 |
+
<nav id="affixed-left-container" class="margin-top-sm-tablet position-sticky display-flex flex-direction-column" aria-label="Primary"></nav>
|
171 |
+
</div><!-- .primary-holder -->
|
172 |
+
<section class="primary-holder column is-two-thirds-tablet is-three-quarters-desktop">
|
173 |
+
<!--div.columns -->
|
174 |
+
<div class="columns is-gapless-mobile has-large-gaps "><div id="main-column" class="column is-full is-8-desktop">
|
175 |
+
|
176 |
+
<main id="main" class="" role="main" data-bi-name="content" lang="en-us" dir="ltr"><!-- article-header -->
|
177 |
+
<div id="article-header" class="background-color-body margin-top-sm-tablet margin-bottom-xs display-none-print">
|
178 |
+
<div class="display-flex align-items-center "><details id="article-header-breadcrumbs-overflow-popover" class="popover" data-for="article-header-breadcrumbs">
|
179 |
+
<summary class="button button-clear button-primary button-sm inner-focus" aria-label="All breadcrumbs">
|
180 |
+
<span class="icon">
|
181 |
+
<span class="docon docon-more"></span>
|
182 |
+
</span>
|
183 |
+
</summary>
|
184 |
+
<div id="article-header-breadcrumbs-overflow" class="popover-content padding-none">
|
185 |
+
|
186 |
+
</div>
|
187 |
+
</details>
|
188 |
+
|
189 |
+
<bread-crumbs id="article-header-breadcrumbs" data-test-id="article-header-breadcrumbs" class="overflow-hidden flex-grow-1 margin-right-sm margin-right-md-tablet margin-right-lg-desktop margin-left-negative-xxs padding-left-xxs"></bread-crumbs><div id="article-header-page-actions" class="opacity-none margin-left-auto display-flex flex-wrap-no-wrap align-items-stretch"><a
|
190 |
+
id="lang-link-tablet"
|
191 |
+
class="button button-primary button-clear button-sm display-none display-inline-flex-tablet"
|
192 |
+
title="Read in English" data-bi-name="language-toggle"
|
193 |
+
data-read-in-link
|
194 |
+
hidden>
|
195 |
+
<span class="icon margin-none" aria-hidden="true" data-read-in-link-icon>
|
196 |
+
<span class="docon docon-locale-globe"></span>
|
197 |
+
</span>
|
198 |
+
<span class="is-visually-hidden" data-read-in-link-text>Read in English</span>
|
199 |
+
</a><button
|
200 |
+
type="button"
|
201 |
+
class="collection button button-clear button-sm button-primary display-none display-inline-flex-tablet"
|
202 |
+
data-list-type="collection"
|
203 |
+
data-bi-name="collection"
|
204 |
+
title="Add to collection">
|
205 |
+
<span class="icon margin-none" aria-hidden="true">
|
206 |
+
<span class="docon docon-circle-addition"></span>
|
207 |
+
</span>
|
208 |
+
<span class="collection-status is-visually-hidden">Save</span>
|
209 |
+
</button><a data-contenteditbtn
|
210 |
+
class="button button-clear button-sm text-decoration-none button-primary display-none display-inline-flex-tablet"
|
211 |
+
aria-label="Edit"
|
212 |
+
title="Edit This Document"
|
213 |
+
data-bi-name="edit"
|
214 |
+
href="https://github.com/MicrosoftDocs/azure-monitor-docs/blob/main/articles/azure-monitor/profiler/profiler-overview.md"
|
215 |
+
data-original_content_git_url="https://github.com/MicrosoftDocs/azure-monitor-docs-pr/blob/live/articles/azure-monitor/profiler/profiler-overview.md"
|
216 |
+
data-original_content_git_url_template="{repo}/blob/{branch}/articles/azure-monitor/profiler/profiler-overview.md"
|
217 |
+
data-pr_repo=""
|
218 |
+
data-pr_branch="">
|
219 |
+
<span class="icon margin-none" aria-hidden="true">
|
220 |
+
<span class="docon docon-edit-outline"></span>
|
221 |
+
</span>
|
222 |
+
</a>
|
223 |
+
<details class="popover popover-right" id="article-header-page-actions-overflow">
|
224 |
+
<summary class="justify-content-flex-start button button-clear button-sm button-primary" aria-label="More actions" title="More actions">
|
225 |
+
<span class="icon" aria-hidden="true">
|
226 |
+
<span class="docon docon-more-vertical"></span>
|
227 |
+
</span>
|
228 |
+
</summary>
|
229 |
+
<div class="popover-content padding-xs"><button
|
230 |
+
data-page-action-item="overflow-mobile"
|
231 |
+
type="button"
|
232 |
+
class="justify-content-flex-start button-block button-sm has-inner-focus button button-clear display-none-tablet"
|
233 |
+
data-bi-name="contents-expand"
|
234 |
+
data-contents-button
|
235 |
+
data-popover-close>
|
236 |
+
<span class="icon">
|
237 |
+
<span class="docon docon-editor-list-bullet" aria-hidden="true"></span>
|
238 |
+
</span><span class="contents-expand-title">Table of contents</span></button><a
|
239 |
+
id="lang-link-overflow"
|
240 |
+
class="justify-content-flex-start button-sm has-inner-focus button button-clear button-block display-none-tablet"
|
241 |
+
title="Read in English" data-bi-name="language-toggle"
|
242 |
+
data-page-action-item="overflow-mobile"
|
243 |
+
data-check-hidden="true"
|
244 |
+
data-read-in-link
|
245 |
+
hidden
|
246 |
+
>
|
247 |
+
<span class="icon" aria-hidden="true" data-read-in-link-icon>
|
248 |
+
<span class="docon docon-locale-globe"></span>
|
249 |
+
</span>
|
250 |
+
<span data-read-in-link-text>Read in English</span>
|
251 |
+
</a><button
|
252 |
+
type="button"
|
253 |
+
class="collection justify-content-flex-start button button-clear button-sm has-inner-focus button-block display-none-tablet"
|
254 |
+
data-list-type="collection"
|
255 |
+
data-bi-name="collection"
|
256 |
+
title="Save"
|
257 |
+
data-page-action-item="overflow-mobile"
|
258 |
+
data-check-hidden="true"
|
259 |
+
data-popover-close>
|
260 |
+
<span class="icon" aria-hidden="true">
|
261 |
+
<span class="docon docon-circle-addition"></span>
|
262 |
+
</span>
|
263 |
+
<span class="collection-status">Save</span>
|
264 |
+
</button>
|
265 |
+
|
266 |
+
|
267 |
+
<button
|
268 |
+
type="button"
|
269 |
+
class="collection justify-content-flex-start button button-clear button-sm has-inner-focus button-block display-none-tablet"
|
270 |
+
data-list-type="plan"
|
271 |
+
data-bi-name="plan"
|
272 |
+
title="Add to Plan"
|
273 |
+
data-page-action-item="overflow-mobile"
|
274 |
+
data-check-hidden="true"
|
275 |
+
data-popover-close
|
276 |
+
hidden>
|
277 |
+
<span class="icon" aria-hidden="true">
|
278 |
+
<span class="docon docon-circle-addition"></span>
|
279 |
+
</span>
|
280 |
+
<span class="plan-status">Add to Plan</span>
|
281 |
+
</button><a data-contenteditbtn
|
282 |
+
class="button button-clear button-block button-sm has-inner-focus justify-content-flex-start text-decoration-none display-none-tablet"
|
283 |
+
aria-label="Edit"
|
284 |
+
title="Edit This Document"
|
285 |
+
data-bi-name="edit"
|
286 |
+
href="https://github.com/MicrosoftDocs/azure-monitor-docs/blob/main/articles/azure-monitor/profiler/profiler-overview.md"
|
287 |
+
data-original_content_git_url="https://github.com/MicrosoftDocs/azure-monitor-docs-pr/blob/live/articles/azure-monitor/profiler/profiler-overview.md"
|
288 |
+
data-original_content_git_url_template="{repo}/blob/{branch}/articles/azure-monitor/profiler/profiler-overview.md"
|
289 |
+
data-pr_repo=""
|
290 |
+
data-pr_branch="">
|
291 |
+
<span class="icon" aria-hidden="true">
|
292 |
+
<span class="docon docon-edit-outline"></span>
|
293 |
+
</span>
|
294 |
+
<span>Edit</span>
|
295 |
+
</a><div aria-hidden="true" class="margin-none" data-page-action-item="overflow-all"></div>
|
296 |
+
<hr class="display-none-tablet margin-bottom-xxs margin-top-xxs" />
|
297 |
+
<h4 class="font-size-sm padding-left-xxs">Share via</h4>
|
298 |
+
|
299 |
+
<a class="button button-clear button-sm button-block has-inner-focus text-decoration-none justify-content-flex-start share-facebook" data-bi-name="facebook" data-page-action-item="overflow-all">
|
300 |
+
<span class="icon" aria-hidden="true">
|
301 |
+
<span class="docon docon-facebook-share font-size-md color-primary"></span>
|
302 |
+
</span>
|
303 |
+
<span class="margin-left-xxs">Facebook</span>
|
304 |
+
</a>
|
305 |
+
<a class="button button-clear button-sm has-inner-focus button-block text-decoration-none justify-content-flex-start share-twitter" data-bi-name="twitter" data-page-action-item="overflow-all">
|
306 |
+
<span class="icon" aria-hidden="true">
|
307 |
+
<span class="docon docon-xlogo-share font-size-xxs"></span>
|
308 |
+
</span>
|
309 |
+
<span class="margin-left-xxs">x.com</span>
|
310 |
+
</a>
|
311 |
+
<a class="button button-clear button-sm has-inner-focus button-block text-decoration-none justify-content-flex-start share-linkedin" data-bi-name="linkedin" data-page-action-item="overflow-all">
|
312 |
+
<span class="icon" aria-hidden="true">
|
313 |
+
<span class="docon docon-linked-in-logo font-size-sm color-primary"></span>
|
314 |
+
</span>
|
315 |
+
<span class="margin-left-xxs">LinkedIn</span>
|
316 |
+
</a>
|
317 |
+
<a class="button button-clear button-sm button-block has-inner-focus text-decoration-none justify-content-flex-start margin-bottom-xxs share-email" data-bi-name="email" data-page-action-item="overflow-all">
|
318 |
+
<span class="icon" aria-hidden="true">
|
319 |
+
<span class="docon docon-mail-message font-size-sm color-primary"></span>
|
320 |
+
</span>
|
321 |
+
<span class="margin-left-xxs">Email</span>
|
322 |
+
</a><hr />
|
323 |
+
<button
|
324 |
+
class="button button-block button-clear button-sm justify-content-flex-start has-inner-focus margin-top-xxs"
|
325 |
+
title="Print"
|
326 |
+
type="button"
|
327 |
+
aria-label="Print"
|
328 |
+
data-bi-name="print"
|
329 |
+
data-page-action-item="overflow-all"
|
330 |
+
data-popover-close
|
331 |
+
data-print-page
|
332 |
+
data-check-hidden="true">
|
333 |
+
<span class="icon" aria-hidden="true">
|
334 |
+
<span class="docon docon-print font-size-sm color-primary"></span>
|
335 |
+
</span>
|
336 |
+
<span class="margin-left-xxs">Print</span>
|
337 |
+
</button>
|
338 |
+
</div>
|
339 |
+
</details>
|
340 |
+
|
341 |
+
</div></div>
|
342 |
+
</div>
|
343 |
+
<!-- end article-header --><div>
|
344 |
+
<button type="button" class="border contents-button button button-clear button-sm is-hidden-tablet has-inner-focus" data-bi-name="contents-expand" data-contents-button hidden>
|
345 |
+
<span class="icon">
|
346 |
+
<span class="docon docon-editor-list-bullet" aria-hidden="true"></span>
|
347 |
+
</span><span class="contents-expand-title">Table of contents</span></button>
|
348 |
+
</div><!-- end mobile-contents button -->
|
349 |
+
|
350 |
+
<div class="content "><h1 id="profile-production-applications-in-azure-with-application-insights-profiler-for-net">Profile production applications in Azure with Application Insights Profiler for .NET</h1><div class="display-flex justify-content-space-between align-items-center flex-wrap-wrap page-metadata-container">
|
351 |
+
<div class="margin-right-xxs">
|
352 |
+
<ul class="metadata page-metadata" data-bi-name="page info" lang="en-us" dir="ltr"><li>Article</li><li class="visibility-hidden-visual-diff"><time class="is-invisible" data-article-date aria-label="Article review date" datetime="2024-10-28T17:03:00Z" data-article-date-source="calculated">10/28/2024</time>
|
353 |
+
</li><li class="contributors-holder display-none-print">
|
354 |
+
<button aria-label="View all contributors" class="contributors-button link-button" data-bi-name="contributors" title="View all contributors">3 contributors</button>
|
355 |
+
</li></ul>
|
356 |
+
</div>
|
357 |
+
<div id="user-feedback" class="margin-block-xxs display-none-print" data-hide-on-archived>
|
358 |
+
<button
|
359 |
+
id="user-feedback-button"
|
360 |
+
data-test-id="conceptual-feedback-button"
|
361 |
+
class="button button-sm button-clear button-primary"
|
362 |
+
type="button"
|
363 |
+
data-bi-name="user-feedback-button"
|
364 |
+
data-user-feedback-button
|
365 |
+
>
|
366 |
+
<span class="icon" aria-hidden="true">
|
367 |
+
<span class="docon docon-like"></span>
|
368 |
+
</span>
|
369 |
+
<span>Feedback</span>
|
370 |
+
</button>
|
371 |
+
</div></div><nav id="center-doc-outline" class="doc-outline is-hidden-desktop display-none-print margin-bottom-sm" data-bi-name="intopic toc" aria-label="In this article">
|
372 |
+
<h2 id="ms--in-this-article" class="title is-6 margin-block-xs">In this article</h2>
|
373 |
+
</nav><!-- <content> --><p>Diagnosing your application's performance issues can be difficult, especially when running on a production environment in the dynamic cloud. Slow responses in your application could be caused by infrastructure, framework, or application code handling the request in the pipeline.</p>
|
374 |
+
<p>With Application Insights Profiler for .NET, you can capture, identify, and view performance traces for your application running in Azure, regardless of the scenario. The .NET Profiler trace process occurs automatically, at scale, and doesn't negatively affect your users. The .NET Profiler identifies:</p>
|
375 |
+
<ul>
|
376 |
+
<li>The median, fastest, and slowest response times for each web request made by your customers.</li>
|
377 |
+
<li>The "hot" code path spending the most time handling a particular web request.</li>
|
378 |
+
</ul>
|
379 |
+
<p>Enable the Profiler for .NET on all your Azure applications to gather data with the following triggers:</p>
|
380 |
+
<ul>
|
381 |
+
<li><strong>Sampling trigger</strong>: Starts Profiler randomly about once an hour for two minutes.</li>
|
382 |
+
<li><strong>CPU trigger</strong>: Starts Profiler when the CPU usage percentage is over 80 percent.</li>
|
383 |
+
<li><strong>Memory trigger</strong>: Starts Profiler when memory usage is above 80 percent.</li>
|
384 |
+
</ul>
|
385 |
+
<p>Each of these triggers can be <a href="profiler-settings#trigger-settings" data-linktype="relative-path">configured, enabled, or disabled</a>.</p>
|
386 |
+
<h2 id="sampling-rate-and-overhead">Sampling rate and overhead</h2>
|
387 |
+
<p>By default, Profiler actively collects traces every hour for 30 seconds or during periods of high CPU or memory usage for 30 seconds. The hourly traces (called sampling) are great for proactive tuning, while the high CPU and memory traces (called triggers) are useful for reactive troubleshooting.</p>
|
388 |
+
<div class="NOTE">
|
389 |
+
<p>Note</p>
|
390 |
+
<p>When the Application Insights Profiler for .NET is actively running and collecting traces, it typically adds between 5% to 15% of CPU and memory overhead to your server.</p>
|
391 |
+
<p>There is <strong>no additional cost</strong> for storing data captured by .NET Profiler. The data is automatically deleted after 15 days.</p>
|
392 |
+
</div>
|
393 |
+
<h2 id="supported-in-the-net-profiler">Supported in the .NET Profiler</h2>
|
394 |
+
<p>Profiler works with .NET applications deployed on the following Azure services. View specific instructions for enabling Profiler for each service type in the following links.</p>
|
395 |
+
<table>
|
396 |
+
<thead>
|
397 |
+
<tr>
|
398 |
+
<th>Compute platform</th>
|
399 |
+
<th>.NET (>= 4.6)</th>
|
400 |
+
<th>.NET Core</th>
|
401 |
+
</tr>
|
402 |
+
</thead>
|
403 |
+
<tbody>
|
404 |
+
<tr>
|
405 |
+
<td><a href="profiler" data-linktype="relative-path">Azure App Service</a></td>
|
406 |
+
<td>Yes</td>
|
407 |
+
<td>Yes</td>
|
408 |
+
</tr>
|
409 |
+
<tr>
|
410 |
+
<td><a href="profiler-vm" data-linktype="relative-path">Azure Virtual Machines and Virtual Machine Scale Sets for Windows</a></td>
|
411 |
+
<td>Yes</td>
|
412 |
+
<td>Yes</td>
|
413 |
+
</tr>
|
414 |
+
<tr>
|
415 |
+
<td><a href="profiler-aspnetcore-linux" data-linktype="relative-path">Azure Virtual Machines and Virtual Machine Scale Sets for Linux</a></td>
|
416 |
+
<td>No</td>
|
417 |
+
<td>Yes</td>
|
418 |
+
</tr>
|
419 |
+
<tr>
|
420 |
+
<td><a href="profiler-cloudservice" data-linktype="relative-path">Azure Cloud Services</a></td>
|
421 |
+
<td>Yes</td>
|
422 |
+
<td>Yes</td>
|
423 |
+
</tr>
|
424 |
+
<tr>
|
425 |
+
<td><a href="profiler-containers" data-linktype="relative-path">Azure Container Instances for Windows</a></td>
|
426 |
+
<td>No</td>
|
427 |
+
<td>Yes</td>
|
428 |
+
</tr>
|
429 |
+
<tr>
|
430 |
+
<td><a href="profiler-containers" data-linktype="relative-path">Azure Container Instances for Linux</a></td>
|
431 |
+
<td>No</td>
|
432 |
+
<td>Yes</td>
|
433 |
+
</tr>
|
434 |
+
<tr>
|
435 |
+
<td>Kubernetes</td>
|
436 |
+
<td>No</td>
|
437 |
+
<td>Yes</td>
|
438 |
+
</tr>
|
439 |
+
<tr>
|
440 |
+
<td><a href="profiler-azure-functions" data-linktype="relative-path">Azure Functions</a></td>
|
441 |
+
<td>Yes</td>
|
442 |
+
<td>Yes</td>
|
443 |
+
</tr>
|
444 |
+
<tr>
|
445 |
+
<td><a href="profiler-servicefabric" data-linktype="relative-path">Azure Service Fabric</a></td>
|
446 |
+
<td>Yes</td>
|
447 |
+
<td>Yes</td>
|
448 |
+
</tr>
|
449 |
+
</tbody>
|
450 |
+
</table>
|
451 |
+
<div class="NOTE">
|
452 |
+
<p>Note</p>
|
453 |
+
<p>You can also use the <a href="../app/java-standalone-profiler" data-linktype="relative-path">Java Profiler for Azure Monitor Application Insights</a>, currently in preview.</p>
|
454 |
+
</div>
|
455 |
+
<p>If you've enabled the Profiler for .NET but aren't seeing traces, see the <a href="profiler-troubleshooting" data-linktype="relative-path">Troubleshooting guide</a>.</p>
|
456 |
+
<h2 id="limitations">Limitations</h2>
|
457 |
+
<ul>
|
458 |
+
<li><strong>Data retention</strong>: The default data retention period is five days.</li>
|
459 |
+
<li><strong>Profiling web apps</strong>:
|
460 |
+
<ul>
|
461 |
+
<li>Although you can use the .NET Profiler at no extra cost, your web app must be hosted in the basic tier of the Web Apps feature of Azure App Service, at minimum.</li>
|
462 |
+
<li>You can attach only one profiler to each web app.</li>
|
463 |
+
<li>.NET Profiler on Linux is only supported on Windows-based web apps.</li>
|
464 |
+
</ul>
|
465 |
+
</li>
|
466 |
+
</ul>
|
467 |
+
<h2 id="next-steps">Next steps</h2>
|
468 |
+
<p>Learn how to enable the .NET Profiler on your Azure service:</p>
|
469 |
+
<ul>
|
470 |
+
<li><a href="profiler" data-linktype="relative-path">Azure App Service</a></li>
|
471 |
+
<li><a href="profiler-azure-functions" data-linktype="relative-path">Azure Functions app</a></li>
|
472 |
+
<li><a href="profiler-cloudservice" data-linktype="relative-path">Azure Cloud Services</a></li>
|
473 |
+
<li><a href="profiler-servicefabric" data-linktype="relative-path">Azure Service Fabric app</a></li>
|
474 |
+
<li><a href="profiler-vm" data-linktype="relative-path">Azure Virtual Machines</a></li>
|
475 |
+
<li><a href="profiler-aspnetcore-linux" data-linktype="relative-path">ASP.NET Core application hosted in Linux on Azure App Service</a></li>
|
476 |
+
<li><a href="profiler-containers" data-linktype="relative-path">ASP.NET Core application running in containers</a></li>
|
477 |
+
</ul>
|
478 |
+
</div><div id="ms--inline-notifications" class="margin-block-xs" data-bi-name="inline-notification"></div><div id="assertive-live-region" role="alert" aria-live="assertive" class="visually-hidden" aria-relevant="additions" aria-atomic="true"></div>
|
479 |
+
<div id="polite-live-region" role="status" aria-live="polite" class="visually-hidden" aria-relevant="additions" aria-atomic="true"></div>
|
480 |
+
<!-- </content> -->
|
481 |
+
|
482 |
+
</main><!-- recommendations section --><!-- end recommendations section -->
|
483 |
+
|
484 |
+
<!-- feedback section --><section id="site-user-feedback-footer" class="font-size-sm margin-top-md" data-test-id="site-user-feedback-footer" data-bi-name="site-feedback-section">
|
485 |
+
<hr class="hr" />
|
486 |
+
<h2 id="feedback" class="title is-3">Feedback</h2>
|
487 |
+
<div class="display-flex flex-wrap-wrap align-items-center">
|
488 |
+
<p class="font-weight-semibold margin-xxs margin-left-none">Was this page helpful?</p>
|
489 |
+
<div class="buttons">
|
490 |
+
<button
|
491 |
+
class="thumb-rating-button like button button-primary button-sm"
|
492 |
+
data-test-id="footer-rating-yes"
|
493 |
+
data-binary-rating-response="rating-yes"
|
494 |
+
type="button"
|
495 |
+
title="This article is helpful"
|
496 |
+
data-bi-name="button-rating-yes"
|
497 |
+
aria-pressed="false"
|
498 |
+
>
|
499 |
+
<span class="icon" aria-hidden="true">
|
500 |
+
<span class="docon docon-like"></span>
|
501 |
+
</span>
|
502 |
+
<span>Yes</span>
|
503 |
+
</button>
|
504 |
+
<button
|
505 |
+
class="thumb-rating-button dislike button button-primary button-sm"
|
506 |
+
data-test-id="footer-rating-no"
|
507 |
+
data-binary-rating-response="rating-no"
|
508 |
+
type="button"
|
509 |
+
title="This article is not helpful"
|
510 |
+
data-bi-name="button-rating-no"
|
511 |
+
aria-pressed="false"
|
512 |
+
>
|
513 |
+
<span class="icon" aria-hidden="true">
|
514 |
+
<span class="docon docon-dislike"></span>
|
515 |
+
</span>
|
516 |
+
<span>No</span>
|
517 |
+
</button>
|
518 |
+
</div>
|
519 |
+
</div><div class="display-flex flex-wrap-wrap margin-top-xxs"><div>
|
520 |
+
<a
|
521 |
+
data-bi-name="provide-feedback-cta"
|
522 |
+
class="has-external-link-indicator"
|
523 |
+
href="https://feedback.azure.com/d365community/forum/3887dc70-2025-ec11-b6e6-000d3a4f09d0"
|
524 |
+
data-bi-name="product-feedback"
|
525 |
+
>
|
526 |
+
<span>Provide product feedback</span>
|
527 |
+
</a><span class="margin-inline-xxs" aria-hidden="true">|</span></div><a href="https://learn.microsoft.com/answers/tags/20/azure-monitor/" class="has-external-link-indicator" data-bi-name="get-help-at-qna">
|
528 |
+
<span>Get help at Microsoft Q&A</span>
|
529 |
+
</a></div>
|
530 |
+
|
531 |
+
</section><!-- end feedback section -->
|
532 |
+
|
533 |
+
<!-- feedback report section --><!-- end feedback report section --><aside
|
534 |
+
id="ms--additional-resources-mobile"
|
535 |
+
aria-label="Additional resources"
|
536 |
+
class="display-none-desktop display-none-print"
|
537 |
+
>
|
538 |
+
<hr class="hr" hidden />
|
539 |
+
<h2 id="ms--additional-resources-mobile-heading" class="title is-3" hidden>Additional resources</h2>
|
540 |
+
<section id="right-rail-recommendations-mobile" data-bi-name="recommendations" hidden></section>
|
541 |
+
<section id="right-rail-training-mobile" data-bi-name="learning-resources-card" hidden></section>
|
542 |
+
<section id="right-rail-events-mobile" data-bi-name="events-card" hidden></section>
|
543 |
+
<section id="right-rail-qna-mobile" data-bi-name="qna-link-card" hidden></section>
|
544 |
+
</aside><div class="border-top is-visible-interactive has-default-focus margin-top-sm "><footer id="footer-interactive" data-bi-name="footer" class="footer-layout"><div class="display-flex gap-xs flex-wrap-wrap is-full-height padding-right-lg-desktop"><a
|
545 |
+
data-mscc-ic="false"
|
546 |
+
class="locale-selector-link button button-sm button-clear flex-shrink-0"
|
547 |
+
href="#"
|
548 |
+
data-bi-name="select-locale">
|
549 |
+
<span class="icon" aria-hidden="true">
|
550 |
+
<span class="docon docon-world"></span>
|
551 |
+
</span>
|
552 |
+
<span class="local-selector-link-text"></span></a><div class="ccpa-privacy-link" data-ccpa-privacy-link hidden>
|
553 |
+
<a
|
554 |
+
href="https://aka.ms/yourcaliforniaprivacychoices"
|
555 |
+
class="button button-sm button-clear flex-shrink-0"
|
556 |
+
data-mscc-ic="false"
|
557 |
+
data-bi-name="your-privacy-choices"
|
558 |
+
>
|
559 |
+
<svg
|
560 |
+
role="img"
|
561 |
+
aria-label="California Consumer Privacy Act (CCPA) Opt-Out Icon"
|
562 |
+
xmlns="http://www.w3.org/2000/svg"
|
563 |
+
viewBox="0 0 30 14"
|
564 |
+
xml:space="preserve"
|
565 |
+
height="16"
|
566 |
+
width="43"
|
567 |
+
focusable="false"
|
568 |
+
>
|
569 |
+
<title>California Consumer Privacy Act (CCPA) Opt-Out Icon</title>
|
570 |
+
<path d="M7.4 12.8h6.8l3.1-11.6H7.4C4.2 1.2 1.6 3.8 1.6 7s2.6 5.8 5.8 5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#fff"></path>
|
571 |
+
<path d="M22.6 0H7.4c-3.9 0-7 3.1-7 7s3.1 7 7 7h15.2c3.9 0 7-3.1 7-7s-3.2-7-7-7zm-21 7c0-3.2 2.6-5.8 5.8-5.8h9.9l-3.1 11.6H7.4c-3.2 0-5.8-2.6-5.8-5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#06f"></path>
|
572 |
+
<path d="M24.6 4c.2.2.2.6 0 .8L22.5 7l2.2 2.2c.2.2.2.6 0 .8-.2.2-.6.2-.8 0l-2.2-2.2-2.2 2.2c-.2.2-.6.2-.8 0-.2-.2-.2-.6 0-.8L20.8 7l-2.2-2.2c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0l2.2 2.2L23.8 4c.2-.2.6-.2.8 0z" style="fill:#fff"></path>
|
573 |
+
<path d="M12.7 4.1c.2.2.3.6.1.8L8.6 9.8c-.1.1-.2.2-.3.2-.2.1-.5.1-.7-.1L5.4 7.7c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0L8 8.6l3.8-4.5c.2-.2.6-.2.9 0z" style="fill:#06f"></path>
|
574 |
+
</svg>
|
575 |
+
<span>Your Privacy Choices</span>
|
576 |
+
</a>
|
577 |
+
|
578 |
+
</div>
|
579 |
+
<div class="flex-shrink-0">
|
580 |
+
<div class="dropdown has-caret-up">
|
581 |
+
<button class="dropdown-trigger button button-clear button-sm has-inner-focus theme-dropdown-trigger"
|
582 |
+
aria-controls="theme-menu-interactive" aria-expanded="false" title="Theme" data-bi-name="theme">
|
583 |
+
<span class="icon">
|
584 |
+
<span class="docon docon-sun" aria-hidden="true"></span>
|
585 |
+
</span>
|
586 |
+
<span>Theme</span>
|
587 |
+
<span class="icon expanded-indicator" aria-hidden="true">
|
588 |
+
<span class="docon docon-chevron-down-light"></span>
|
589 |
+
</span>
|
590 |
+
</button>
|
591 |
+
<div class="dropdown-menu" id="theme-menu-interactive" role="menu">
|
592 |
+
<ul class="theme-selector padding-xxs" role="none">
|
593 |
+
<li class="theme display-block" role="menuitem">
|
594 |
+
<button class="button button-clear button-sm theme-control button-block justify-content-flex-start"
|
595 |
+
data-theme-to="light">
|
596 |
+
<span class="theme-light margin-right-xxs">
|
597 |
+
<span
|
598 |
+
class="theme-selector-icon border display-inline-block has-body-background"
|
599 |
+
aria-hidden="true">
|
600 |
+
<svg class="svg" xmlns="http://www.w3.org/2000/svg"
|
601 |
+
viewBox="0 0 22 14">
|
602 |
+
<rect width="22" height="14" class="has-fill-body-background" />
|
603 |
+
<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
|
604 |
+
<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
|
605 |
+
<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
|
606 |
+
<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
|
607 |
+
<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
|
608 |
+
<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
|
609 |
+
<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
|
610 |
+
</svg>
|
611 |
+
</span>
|
612 |
+
</span>
|
613 |
+
<span>Light</span>
|
614 |
+
</button>
|
615 |
+
</li>
|
616 |
+
<li class="theme display-block" role="menuitem">
|
617 |
+
<button class="button button-clear button-sm theme-control button-block justify-content-flex-start"
|
618 |
+
data-theme-to="dark">
|
619 |
+
<span class="theme-dark margin-right-xxs">
|
620 |
+
<span
|
621 |
+
class="border theme-selector-icon display-inline-block has-body-background"
|
622 |
+
aria-hidden="true">
|
623 |
+
<svg class="svg" xmlns="http://www.w3.org/2000/svg"
|
624 |
+
viewBox="0 0 22 14">
|
625 |
+
<rect width="22" height="14" class="has-fill-body-background" />
|
626 |
+
<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
|
627 |
+
<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
|
628 |
+
<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
|
629 |
+
<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
|
630 |
+
<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
|
631 |
+
<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
|
632 |
+
<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
|
633 |
+
</svg>
|
634 |
+
</span>
|
635 |
+
</span>
|
636 |
+
<span>Dark</span>
|
637 |
+
</button>
|
638 |
+
</li>
|
639 |
+
<li class="theme display-block" role="menuitem">
|
640 |
+
<button class="button button-clear button-sm theme-control button-block justify-content-flex-start"
|
641 |
+
data-theme-to="high-contrast">
|
642 |
+
<span class="theme-high-contrast margin-right-xxs">
|
643 |
+
<span
|
644 |
+
class="border theme-selector-icon display-inline-block has-body-background"
|
645 |
+
aria-hidden="true">
|
646 |
+
<svg class="svg" xmlns="http://www.w3.org/2000/svg"
|
647 |
+
viewBox="0 0 22 14">
|
648 |
+
<rect width="22" height="14" class="has-fill-body-background" />
|
649 |
+
<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
|
650 |
+
<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
|
651 |
+
<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
|
652 |
+
<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
|
653 |
+
<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
|
654 |
+
<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
|
655 |
+
<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
|
656 |
+
</svg>
|
657 |
+
</span>
|
658 |
+
</span>
|
659 |
+
<span>High contrast</span>
|
660 |
+
</button>
|
661 |
+
</li>
|
662 |
+
</ul>
|
663 |
+
</div>
|
664 |
+
</div>
|
665 |
+
|
666 |
+
</div>
|
667 |
+
</div>
|
668 |
+
<ul class="links" data-bi-name="footerlinks">
|
669 |
+
<li class="manage-cookies-holder" hidden></li><li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/previous-versions/" data-bi-name="archivelink">Previous Versions</a></li>
|
670 |
+
<li><a class="external-link-indicator" data-mscc-ic="false" href="https://techcommunity.microsoft.com/t5/microsoft-learn-blog/bg-p/MicrosoftLearnBlog" data-bi-name="bloglink">Blog</a></li>
|
671 |
+
<li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/contribute/" data-bi-name="contributorGuide">Contribute</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="https://go.microsoft.com/fwlink/?LinkId=521839" data-bi-name="privacy">Privacy</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/legal/termsofuse" data-bi-name="termsofuse">Terms of Use</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="https://www.microsoft.com/legal/intellectualproperty/Trademarks/" data-bi-name="trademarks">Trademarks</a></li><li>© Microsoft 2024</li>
|
672 |
+
</ul>
|
673 |
+
</footer></div></div><div
|
674 |
+
id="ms--additional-resources"
|
675 |
+
class="right-container column is-4-desktop display-none display-block-desktop"
|
676 |
+
data-bi-name="pageactions"
|
677 |
+
role="complementary"
|
678 |
+
aria-label="Additional resources"
|
679 |
+
>
|
680 |
+
<div id="affixed-right-container" class="margin-top-sm-tablet" data-bi-name="right-column">
|
681 |
+
<h2 id="ms--additional-resources-heading" class="title is-6 margin-top-md" hidden>Additional resources</h2>
|
682 |
+
<section id="right-rail-events" data-bi-name="events-card" hidden></section>
|
683 |
+
<section id="right-rail-training" data-bi-name="learning-resources-card" hidden></section>
|
684 |
+
<section id="right-rail-recommendations" data-bi-name="recommendations" hidden></section>
|
685 |
+
<nav id="side-doc-outline" class="doc-outline" data-bi-name="intopic toc" aria-label="In this article">
|
686 |
+
<h3>In this article</h3>
|
687 |
+
</nav>
|
688 |
+
<section id="right-rail-qna" class="margin-top-xxs" data-bi-name="qna-link-card" hidden></section>
|
689 |
+
</div>
|
690 |
+
</div></div>
|
691 |
+
<!--end of div.columns -->
|
692 |
+
|
693 |
+
</section>
|
694 |
+
<!--end of .primary-holder -->
|
695 |
+
|
696 |
+
<!-- interactive container -->
|
697 |
+
<aside id="interactive-container" class="interactive-container is-visible-interactive column has-body-background-dark ">
|
698 |
+
</aside>
|
699 |
+
<!-- end of interactive container -->
|
700 |
+
</div>
|
701 |
+
|
702 |
+
</div>
|
703 |
+
<!--end of .mainContainer -->
|
704 |
+
|
705 |
+
<section class="border-top has-default-focus is-hidden-interactive margin-top-sm "><footer id="footer" data-bi-name="footer" class="footer-layout uhf-container has-padding" role="contentinfo"><div class="display-flex gap-xs flex-wrap-wrap is-full-height padding-right-lg-desktop"><a
|
706 |
+
data-mscc-ic="false"
|
707 |
+
class="locale-selector-link button button-sm button-clear flex-shrink-0"
|
708 |
+
href="#"
|
709 |
+
data-bi-name="select-locale">
|
710 |
+
<span class="icon" aria-hidden="true">
|
711 |
+
<span class="docon docon-world"></span>
|
712 |
+
</span>
|
713 |
+
<span class="local-selector-link-text"></span></a><div class="ccpa-privacy-link" data-ccpa-privacy-link hidden>
|
714 |
+
<a
|
715 |
+
href="https://aka.ms/yourcaliforniaprivacychoices"
|
716 |
+
class="button button-sm button-clear flex-shrink-0"
|
717 |
+
data-mscc-ic="false"
|
718 |
+
data-bi-name="your-privacy-choices"
|
719 |
+
>
|
720 |
+
<svg
|
721 |
+
role="img"
|
722 |
+
aria-label="California Consumer Privacy Act (CCPA) Opt-Out Icon"
|
723 |
+
xmlns="http://www.w3.org/2000/svg"
|
724 |
+
viewBox="0 0 30 14"
|
725 |
+
xml:space="preserve"
|
726 |
+
height="16"
|
727 |
+
width="43"
|
728 |
+
focusable="false"
|
729 |
+
>
|
730 |
+
<title>California Consumer Privacy Act (CCPA) Opt-Out Icon</title>
|
731 |
+
<path d="M7.4 12.8h6.8l3.1-11.6H7.4C4.2 1.2 1.6 3.8 1.6 7s2.6 5.8 5.8 5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#fff"></path>
|
732 |
+
<path d="M22.6 0H7.4c-3.9 0-7 3.1-7 7s3.1 7 7 7h15.2c3.9 0 7-3.1 7-7s-3.2-7-7-7zm-21 7c0-3.2 2.6-5.8 5.8-5.8h9.9l-3.1 11.6H7.4c-3.2 0-5.8-2.6-5.8-5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#06f"></path>
|
733 |
+
<path d="M24.6 4c.2.2.2.6 0 .8L22.5 7l2.2 2.2c.2.2.2.6 0 .8-.2.2-.6.2-.8 0l-2.2-2.2-2.2 2.2c-.2.2-.6.2-.8 0-.2-.2-.2-.6 0-.8L20.8 7l-2.2-2.2c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0l2.2 2.2L23.8 4c.2-.2.6-.2.8 0z" style="fill:#fff"></path>
|
734 |
+
<path d="M12.7 4.1c.2.2.3.6.1.8L8.6 9.8c-.1.1-.2.2-.3.2-.2.1-.5.1-.7-.1L5.4 7.7c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0L8 8.6l3.8-4.5c.2-.2.6-.2.9 0z" style="fill:#06f"></path>
|
735 |
+
</svg>
|
736 |
+
<span>Your Privacy Choices</span>
|
737 |
+
</a>
|
738 |
+
|
739 |
+
</div>
|
740 |
+
<div class="flex-shrink-0">
|
741 |
+
<div class="dropdown has-caret-up">
|
742 |
+
<button class="dropdown-trigger button button-clear button-sm has-inner-focus theme-dropdown-trigger"
|
743 |
+
aria-controls="theme-menu" aria-expanded="false" title="Theme" data-bi-name="theme">
|
744 |
+
<span class="icon">
|
745 |
+
<span class="docon docon-sun" aria-hidden="true"></span>
|
746 |
+
</span>
|
747 |
+
<span>Theme</span>
|
748 |
+
<span class="icon expanded-indicator" aria-hidden="true">
|
749 |
+
<span class="docon docon-chevron-down-light"></span>
|
750 |
+
</span>
|
751 |
+
</button>
|
752 |
+
<div class="dropdown-menu" id="theme-menu" role="menu">
|
753 |
+
<ul class="theme-selector padding-xxs" role="none">
|
754 |
+
<li class="theme display-block" role="menuitem">
|
755 |
+
<button class="button button-clear button-sm theme-control button-block justify-content-flex-start"
|
756 |
+
data-theme-to="light">
|
757 |
+
<span class="theme-light margin-right-xxs">
|
758 |
+
<span
|
759 |
+
class="theme-selector-icon border display-inline-block has-body-background"
|
760 |
+
aria-hidden="true">
|
761 |
+
<svg class="svg" xmlns="http://www.w3.org/2000/svg"
|
762 |
+
viewBox="0 0 22 14">
|
763 |
+
<rect width="22" height="14" class="has-fill-body-background" />
|
764 |
+
<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
|
765 |
+
<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
|
766 |
+
<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
|
767 |
+
<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
|
768 |
+
<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
|
769 |
+
<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
|
770 |
+
<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
|
771 |
+
</svg>
|
772 |
+
</span>
|
773 |
+
</span>
|
774 |
+
<span>Light</span>
|
775 |
+
</button>
|
776 |
+
</li>
|
777 |
+
<li class="theme display-block" role="menuitem">
|
778 |
+
<button class="button button-clear button-sm theme-control button-block justify-content-flex-start"
|
779 |
+
data-theme-to="dark">
|
780 |
+
<span class="theme-dark margin-right-xxs">
|
781 |
+
<span
|
782 |
+
class="border theme-selector-icon display-inline-block has-body-background"
|
783 |
+
aria-hidden="true">
|
784 |
+
<svg class="svg" xmlns="http://www.w3.org/2000/svg"
|
785 |
+
viewBox="0 0 22 14">
|
786 |
+
<rect width="22" height="14" class="has-fill-body-background" />
|
787 |
+
<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
|
788 |
+
<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
|
789 |
+
<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
|
790 |
+
<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
|
791 |
+
<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
|
792 |
+
<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
|
793 |
+
<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
|
794 |
+
</svg>
|
795 |
+
</span>
|
796 |
+
</span>
|
797 |
+
<span>Dark</span>
|
798 |
+
</button>
|
799 |
+
</li>
|
800 |
+
<li class="theme display-block" role="menuitem">
|
801 |
+
<button class="button button-clear button-sm theme-control button-block justify-content-flex-start"
|
802 |
+
data-theme-to="high-contrast">
|
803 |
+
<span class="theme-high-contrast margin-right-xxs">
|
804 |
+
<span
|
805 |
+
class="border theme-selector-icon display-inline-block has-body-background"
|
806 |
+
aria-hidden="true">
|
807 |
+
<svg class="svg" xmlns="http://www.w3.org/2000/svg"
|
808 |
+
viewBox="0 0 22 14">
|
809 |
+
<rect width="22" height="14" class="has-fill-body-background" />
|
810 |
+
<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
|
811 |
+
<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
|
812 |
+
<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
|
813 |
+
<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
|
814 |
+
<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
|
815 |
+
<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
|
816 |
+
<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
|
817 |
+
</svg>
|
818 |
+
</span>
|
819 |
+
</span>
|
820 |
+
<span>High contrast</span>
|
821 |
+
</button>
|
822 |
+
</li>
|
823 |
+
</ul>
|
824 |
+
</div>
|
825 |
+
</div>
|
826 |
+
|
827 |
+
</div>
|
828 |
+
</div>
|
829 |
+
<ul class="links" data-bi-name="footerlinks">
|
830 |
+
<li class="manage-cookies-holder" hidden></li><li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/previous-versions/" data-bi-name="archivelink">Previous Versions</a></li>
|
831 |
+
<li><a class="external-link-indicator" data-mscc-ic="false" href="https://techcommunity.microsoft.com/t5/microsoft-learn-blog/bg-p/MicrosoftLearnBlog" data-bi-name="bloglink">Blog</a></li>
|
832 |
+
<li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/contribute/" data-bi-name="contributorGuide">Contribute</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="https://go.microsoft.com/fwlink/?LinkId=521839" data-bi-name="privacy">Privacy</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/legal/termsofuse" data-bi-name="termsofuse">Terms of Use</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="https://www.microsoft.com/legal/intellectualproperty/Trademarks/" data-bi-name="trademarks">Trademarks</a></li><li>© Microsoft 2024</li>
|
833 |
+
</ul>
|
834 |
+
</footer>
|
835 |
+
|
836 |
+
</section>
|
837 |
+
|
838 |
+
<div id="action-panel" role="region" aria-label="Action Panel" class="action-panel has-default-focus" tabindex="-1"></div>
|
839 |
+
</body>
|
840 |
+
</html>
|
pyvenv.cfg
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
home = C:\Python312
|
2 |
+
include-system-site-packages = false
|
3 |
+
version = 3.12.6
|
4 |
+
executable = C:\Python312\python.exe
|
5 |
+
command = C:\Python312\python.exe -m venv C:\Users\Jonathan\OneDrive - Raiff's Bits\Desktop\ut\venv
|
qustions.json
ADDED
@@ -0,0 +1,218 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[
|
2 |
+
{
|
3 |
+
"question": "What is the meaning of life?",
|
4 |
+
"functions": [
|
5 |
+
{
|
6 |
+
"name": "newton_thoughts",
|
7 |
+
"description": "Apply Newton's laws to the given question.",
|
8 |
+
"parameters": {
|
9 |
+
"question": "How does Newton's third law apply to human interactions?"
|
10 |
+
}
|
11 |
+
},
|
12 |
+
{
|
13 |
+
"name": "davinci_insights",
|
14 |
+
"description": "Generate insights like Da Vinci for the given question.",
|
15 |
+
"parameters": {
|
16 |
+
"question": "What can we learn from nature's design about the meaning of life?"
|
17 |
+
}
|
18 |
+
},
|
19 |
+
{
|
20 |
+
"name": "human_intuition",
|
21 |
+
"description": "Provide human intuition for the given question.",
|
22 |
+
"parameters": {
|
23 |
+
"question": "What does your gut instinct tell you about finding happiness?"
|
24 |
+
}
|
25 |
+
},
|
26 |
+
{
|
27 |
+
"name": "neural_network_thinking",
|
28 |
+
"description": "Apply neural network thinking to the given question.",
|
29 |
+
"parameters": {
|
30 |
+
"question": "How can neural networks help us understand human creativity?"
|
31 |
+
}
|
32 |
+
},
|
33 |
+
{
|
34 |
+
"name": "quantum_computing_thinking",
|
35 |
+
"description": "Apply quantum computing principles to the given question.",
|
36 |
+
"parameters": {
|
37 |
+
"question": "How can quantum computing revolutionize problem-solving?"
|
38 |
+
}
|
39 |
+
},
|
40 |
+
{
|
41 |
+
"name": "resilient_kindness",
|
42 |
+
"description": "Provide perspectives of resilient kindness.",
|
43 |
+
"parameters": {
|
44 |
+
"question": "How can we find strength in kindness during difficult times?"
|
45 |
+
}
|
46 |
+
},
|
47 |
+
{
|
48 |
+
"name": "identify_and_refute_fallacies",
|
49 |
+
"description": "Identify and refute common logical fallacies in the argument.",
|
50 |
+
"parameters": {
|
51 |
+
"argument": "Life has no meaning because it is full of suffering."
|
52 |
+
}
|
53 |
+
}
|
54 |
+
]
|
55 |
+
},
|
56 |
+
{
|
57 |
+
"question": "How can we mitigate bias in artificial intelligence systems?",
|
58 |
+
"functions": [
|
59 |
+
{
|
60 |
+
"name": "newton_thoughts",
|
61 |
+
"description": "Apply Newton's laws to the given question.",
|
62 |
+
"parameters": {
|
63 |
+
"question": "How can Newton's laws of motion inspire fairness in AI?"
|
64 |
+
}
|
65 |
+
},
|
66 |
+
{
|
67 |
+
"name": "davinci_insights",
|
68 |
+
"description": "Generate insights like Da Vinci for the given question.",
|
69 |
+
"parameters": {
|
70 |
+
"question": "What can Da Vinci's approach to art teach us about unbiased AI?"
|
71 |
+
}
|
72 |
+
},
|
73 |
+
{
|
74 |
+
"name": "human_intuition",
|
75 |
+
"description": "Provide human intuition for the given question.",
|
76 |
+
"parameters": {
|
77 |
+
"question": "How can we use human intuition to detect bias in AI?"
|
78 |
+
}
|
79 |
+
},
|
80 |
+
{
|
81 |
+
"name": "neural_network_thinking",
|
82 |
+
"description": "Apply neural network thinking to the given question.",
|
83 |
+
"parameters": {
|
84 |
+
"question": "How can neural networks be designed to minimize bias?"
|
85 |
+
}
|
86 |
+
},
|
87 |
+
{
|
88 |
+
"name": "quantum_computing_thinking",
|
89 |
+
"description": "Apply quantum computing principles to the given question.",
|
90 |
+
"parameters": {
|
91 |
+
"question": "How can quantum computing help in creating unbiased AI?"
|
92 |
+
}
|
93 |
+
},
|
94 |
+
{
|
95 |
+
"name": "resilient_kindness",
|
96 |
+
"description": "Provide perspectives of resilient kindness.",
|
97 |
+
"parameters": {
|
98 |
+
"question": "How can kindness be integrated into AI to ensure fairness?"
|
99 |
+
}
|
100 |
+
},
|
101 |
+
{
|
102 |
+
"name": "identify_and_refute_fallacies",
|
103 |
+
"description": "Identify and refute common logical fallacies in the argument.",
|
104 |
+
"parameters": {
|
105 |
+
"argument": "AI will always be biased because it is created by humans."
|
106 |
+
}
|
107 |
+
}
|
108 |
+
]
|
109 |
+
},
|
110 |
+
{
|
111 |
+
"question": "How does Hydrogen's properties influence its interactions?",
|
112 |
+
"functions": [
|
113 |
+
{
|
114 |
+
"name": "newton_thoughts",
|
115 |
+
"description": "Apply Newton's laws to the given question.",
|
116 |
+
"parameters": {
|
117 |
+
"question": "How does Newton's laws explain Hydrogen's behavior in reactions?"
|
118 |
+
}
|
119 |
+
},
|
120 |
+
{
|
121 |
+
"name": "davinci_insights",
|
122 |
+
"description": "Generate insights like Da Vinci for the given question.",
|
123 |
+
"parameters": {
|
124 |
+
"question": "What can Da Vinci's observations teach us about Hydrogen?"
|
125 |
+
}
|
126 |
+
},
|
127 |
+
{
|
128 |
+
"name": "human_intuition",
|
129 |
+
"description": "Provide human intuition for the given question.",
|
130 |
+
"parameters": {
|
131 |
+
"question": "What intuitive insights can we gain about Hydrogen's role in the universe?"
|
132 |
+
}
|
133 |
+
},
|
134 |
+
{
|
135 |
+
"name": "neural_network_thinking",
|
136 |
+
"description": "Apply neural network thinking to the given question.",
|
137 |
+
"parameters": {
|
138 |
+
"question": "How can neural networks model Hydrogen's interactions?"
|
139 |
+
}
|
140 |
+
},
|
141 |
+
{
|
142 |
+
"name": "quantum_computing_thinking",
|
143 |
+
"description": "Apply quantum computing principles to the given question.",
|
144 |
+
"parameters": {
|
145 |
+
"question": "How can quantum computing enhance our understanding of Hydrogen?"
|
146 |
+
}
|
147 |
+
},
|
148 |
+
{
|
149 |
+
"name": "resilient_kindness",
|
150 |
+
"description": "Provide perspectives of resilient kindness.",
|
151 |
+
"parameters": {
|
152 |
+
"question": "How can we draw parallels between Hydrogen's simplicity and resilience?"
|
153 |
+
}
|
154 |
+
},
|
155 |
+
{
|
156 |
+
"name": "identify_and_refute_fallacies",
|
157 |
+
"description": "Identify and refute common logical fallacies in the argument.",
|
158 |
+
"parameters": {
|
159 |
+
"argument": "Hydrogen is not important because it is the simplest element."
|
160 |
+
}
|
161 |
+
}
|
162 |
+
]
|
163 |
+
},
|
164 |
+
{
|
165 |
+
"question": "What makes Diamond unique in its applications?",
|
166 |
+
"functions": [
|
167 |
+
{
|
168 |
+
"name": "newton_thoughts",
|
169 |
+
"description": "Apply Newton's laws to the given question.",
|
170 |
+
"parameters": {
|
171 |
+
"question": "How do Newton's laws explain Diamond's hardness?"
|
172 |
+
}
|
173 |
+
},
|
174 |
+
{
|
175 |
+
"name": "davinci_insights",
|
176 |
+
"description": "Generate insights like Da Vinci for the given question.",
|
177 |
+
"parameters": {
|
178 |
+
"question": "What can Da Vinci's approach to materials teach us about Diamond?"
|
179 |
+
}
|
180 |
+
},
|
181 |
+
{
|
182 |
+
"name": "human_intuition",
|
183 |
+
"description": "Provide human intuition for the given question.",
|
184 |
+
"parameters": {
|
185 |
+
"question": "What intuitive insights can we gain about Diamond's value?"
|
186 |
+
}
|
187 |
+
},
|
188 |
+
{
|
189 |
+
"name": "neural_network_thinking",
|
190 |
+
"description": "Apply neural network thinking to the given question.",
|
191 |
+
"parameters": {
|
192 |
+
"question": "How can neural networks predict Diamond's properties?"
|
193 |
+
}
|
194 |
+
},
|
195 |
+
{
|
196 |
+
"name": "quantum_computing_thinking",
|
197 |
+
"description": "Apply quantum computing principles to the given question.",
|
198 |
+
"parameters": {
|
199 |
+
"question": "How can quantum computing help in synthesizing Diamonds?"
|
200 |
+
}
|
201 |
+
},
|
202 |
+
{
|
203 |
+
"name": "resilient_kindness",
|
204 |
+
"description": "Provide perspectives of resilient kindness.",
|
205 |
+
"parameters": {
|
206 |
+
"question": "How can we draw parallels between Diamond's strength and human resilience?"
|
207 |
+
}
|
208 |
+
},
|
209 |
+
{
|
210 |
+
"name": "identify_and_refute_fallacies",
|
211 |
+
"description": "Identify and refute common logical fallacies in the argument.",
|
212 |
+
"parameters": {
|
213 |
+
"argument": "Diamonds are valuable only because they are rare."
|
214 |
+
}
|
215 |
+
}
|
216 |
+
]
|
217 |
+
}
|
218 |
+
]
|
requirements.txt
ADDED
@@ -0,0 +1,106 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
aiohttp==3.10.5
|
2 |
+
aiosignal==1.3.2
|
3 |
+
aiounittest==1.3.0
|
4 |
+
anyio==4.7.0
|
5 |
+
applicationinsights==0.11.9
|
6 |
+
attrs==24.3.0
|
7 |
+
azure-cognitiveservices-language-luis==0.2.0
|
8 |
+
azure-core==1.32.0
|
9 |
+
azure-identity==1.19.0
|
10 |
+
azure-storage-blob==12.7.0
|
11 |
+
azure-storage-queue==12.4.0
|
12 |
+
azure-cosmos==4.7.0
|
13 |
+
blis==1.1.0
|
14 |
+
botbuilder-ai==4.16.2
|
15 |
+
botbuilder-applicationinsights==4.16.2
|
16 |
+
botbuilder-azure==4.16.2
|
17 |
+
botbuilder-core==4.16.2
|
18 |
+
botbuilder-dialogs==4.16.2
|
19 |
+
botbuilder-integration-aiohttp==4.16.2
|
20 |
+
botbuilder-schema==4.16.2
|
21 |
+
certifi==2024.8.30
|
22 |
+
cffi==1.17.1
|
23 |
+
charset-normalizer==3.4.0
|
24 |
+
click==8.1.8
|
25 |
+
colorama==0.4.6
|
26 |
+
confection==0.1.5
|
27 |
+
coverage==7.2.1
|
28 |
+
cryptography==41.0.3
|
29 |
+
cymem==2.0.10
|
30 |
+
distro==1.9.0
|
31 |
+
httpcore==1.0.7
|
32 |
+
httpx==0.28.1
|
33 |
+
idna==3.10
|
34 |
+
importlib-metadata==6.0.0
|
35 |
+
isodate==0.7.2
|
36 |
+
itsdangerous==2.2.0
|
37 |
+
Jinja2==3.1.5
|
38 |
+
joblib==1.4.2
|
39 |
+
jsonpickle==1.4.2
|
40 |
+
langcodes==3.5.0
|
41 |
+
marisa-trie==1.2.1
|
42 |
+
MarkupSafe==3.0.2
|
43 |
+
mpmath==1.3.0
|
44 |
+
msal==1.31.1
|
45 |
+
msal-extensions==1.2.0
|
46 |
+
msrest==0.7.1
|
47 |
+
msrestazure==0.6.4.post1
|
48 |
+
multidict==6.1.0
|
49 |
+
murmurhash==1.0.11
|
50 |
+
networkx==3.4.2
|
51 |
+
nltk==3.8.1
|
52 |
+
numpy==2.2.1
|
53 |
+
oauthlib==3.2.2
|
54 |
+
openai==1.58.1
|
55 |
+
packaging==24.1
|
56 |
+
pillow==11.0.0
|
57 |
+
portalocker==2.10.1
|
58 |
+
preshed==3.0.9
|
59 |
+
propcache==0.2.1
|
60 |
+
psutil==6.1.1
|
61 |
+
pycparser==2.22
|
62 |
+
pydantic==2.10.4
|
63 |
+
pydantic_core==2.27.2
|
64 |
+
Pygments==2.18.0
|
65 |
+
PyJWT==2.10.1
|
66 |
+
python-dateutil==2.9.0.post0
|
67 |
+
python-dotenv==1.0.1
|
68 |
+
pytest==7.4.0
|
69 |
+
pytz==2024.2
|
70 |
+
pywin32==308
|
71 |
+
PyYAML==6.0.2
|
72 |
+
regex==2024.11.6
|
73 |
+
requests==2.32.3
|
74 |
+
requests-oauthlib==2.0.0
|
75 |
+
rich==13.9.4
|
76 |
+
scipy==1.14.1
|
77 |
+
sentencepiece==0.2.0
|
78 |
+
setuptools==75.6.0
|
79 |
+
six==1.17.0
|
80 |
+
smart-open==7.1.0
|
81 |
+
sniffio==1.3.1
|
82 |
+
spacy==3.8.3
|
83 |
+
spacy-legacy==3.0.12
|
84 |
+
spacy-loggers==1.0.5
|
85 |
+
sqlparse==0.5.3
|
86 |
+
srsly==2.5.0
|
87 |
+
sympy==1.13.1
|
88 |
+
tenacity==8.2.2
|
89 |
+
textblob==0.17.1
|
90 |
+
thinc==8.3.3
|
91 |
+
tokenizers==0.21.0
|
92 |
+
torch==2.5.1
|
93 |
+
torchaudio==2.5.1
|
94 |
+
torchvision==0.20.1
|
95 |
+
tqdm==4.67.1
|
96 |
+
transformers==4.47.1
|
97 |
+
typer==0.15.1
|
98 |
+
typing_extensions==4.12.2
|
99 |
+
tzdata==2024.2
|
100 |
+
urllib3==2.2.3
|
101 |
+
vaderSentiment==3.3.2
|
102 |
+
wasabi==1.1.3
|
103 |
+
Werkzeug==3.1.3
|
104 |
+
wrapt==1.17.0
|
105 |
+
yarl==1.18.3
|
106 |
+
pyodbc==4.0.32
|
sentiment_analysis.py
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from textblob import TextBlob
|
2 |
+
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
|
3 |
+
from typing import Dict, Any
|
4 |
+
|
5 |
+
def analyze_sentiment_textblob(text: str) -> TextBlob:
|
6 |
+
"""Analyze the sentiment of the given text using TextBlob.
|
7 |
+
|
8 |
+
Args:
|
9 |
+
text (str): The text to analyze.
|
10 |
+
|
11 |
+
Returns:
|
12 |
+
TextBlob: The sentiment analysis result from TextBlob.
|
13 |
+
"""
|
14 |
+
try:
|
15 |
+
blob = TextBlob(text)
|
16 |
+
sentiment = blob.sentiment
|
17 |
+
return sentiment
|
18 |
+
except Exception as e:
|
19 |
+
print(f"Error analyzing sentiment with TextBlob: {e}")
|
20 |
+
return None
|
21 |
+
|
22 |
+
def analyze_sentiment_vader(text: str) -> Dict[str, Any]:
|
23 |
+
"""Analyze the sentiment of the given text using VADER.
|
24 |
+
|
25 |
+
Args:
|
26 |
+
text (str): The text to analyze.
|
27 |
+
|
28 |
+
Returns:
|
29 |
+
dict: The sentiment analysis result from VADER.
|
30 |
+
"""
|
31 |
+
try:
|
32 |
+
analyzer = SentimentIntensityAnalyzer()
|
33 |
+
sentiment = analyzer.polarity_scores(text)
|
34 |
+
return sentiment
|
35 |
+
except Exception as e:
|
36 |
+
print(f"Error analyzing sentiment with VADER: {e}")
|
37 |
+
return {}
|
set-up-code-optimizations.htm
ADDED
@@ -0,0 +1,800 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html><html
|
2 |
+
class="hasSidebar hasPageActions hasBreadcrumb conceptual has-default-focus theme-light"
|
3 |
+
lang="en-us"
|
4 |
+
dir="ltr"
|
5 |
+
data-authenticated="false"
|
6 |
+
data-auth-status-determined="false"
|
7 |
+
data-target="docs"
|
8 |
+
x-ms-format-detection="none">
|
9 |
+
|
10 |
+
<head>
|
11 |
+
<meta charset="utf-8" />
|
12 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
13 |
+
<meta property="og:title" content="Set up Code Optimizations - Azure Monitor" />
|
14 |
+
<meta property="og:type" content="website" />
|
15 |
+
<meta property="og:url" content="https://learn.microsoft.com/en-us/azure/azure-monitor/insights/set-up-code-optimizations" /><meta property="og:description" content="Learn how to enable and set up Azure Monitor's Code Optimizations feature." /><meta property="og:image" content="https://learn.microsoft.com/en-us/media/open-graph-image.png" />
|
16 |
+
|
17 |
+
<meta property="og:image:alt" content="Microsoft Learn" />
|
18 |
+
|
19 |
+
<meta name="twitter:card" content="summary_large_image" />
|
20 |
+
|
21 |
+
<meta name="twitter:site" content="@MicrosoftLearn" />
|
22 |
+
|
23 |
+
<meta name="color-scheme" content="light dark"><meta name="author" content="hhunter-ms" />
|
24 |
+
<meta name="breadcrumb_path" content="../../breadcrumb/azure-monitor/toc.json" />
|
25 |
+
<meta name="depot_name" content="Learn.azure-monitor" />
|
26 |
+
<meta name="description" content="Learn how to enable and set up Azure Monitor's Code Optimizations feature." />
|
27 |
+
<meta name="document_id" content="f8563574-c8f3-6422-33f2-d662a2c99880" />
|
28 |
+
<meta name="document_version_independent_id" content="b9309449-3aa8-ea6c-e3b6-2ac2d4c56f2e" />
|
29 |
+
<meta name="feedback_help_link_type" content="get-help-at-qna" />
|
30 |
+
<meta name="feedback_help_link_url" content="https://learn.microsoft.com/answers/tags/20/azure-monitor/" />
|
31 |
+
<meta name="feedback_product_url" content="https://feedback.azure.com/d365community/forum/3887dc70-2025-ec11-b6e6-000d3a4f09d0" />
|
32 |
+
<meta name="feedback_system" content="Standard" />
|
33 |
+
<meta name="git_commit_id" content="145d93bd09c6418862ed1114f8255564d749c624" />
|
34 |
+
<meta name="gitcommit" content="https://github.com/MicrosoftDocs/azure-monitor-docs-pr/blob/145d93bd09c6418862ed1114f8255564d749c624/articles/azure-monitor/insights/set-up-code-optimizations.md" />
|
35 |
+
<meta name="learn_banner_products" content="azure" />
|
36 |
+
<meta name="locale" content="en-us" />
|
37 |
+
<meta name="manager" content="orspodek" />
|
38 |
+
<meta name="ms.author" content="hannahhunter" />
|
39 |
+
<meta name="ms.date" content="10/07/2024" />
|
40 |
+
<meta name="ms.reviewer" content="ryankahng" />
|
41 |
+
<meta name="ms.service" content="azure-monitor" />
|
42 |
+
<meta name="ms.subservice" content="optimization-insights" />
|
43 |
+
<meta name="ms.suite" content="office" />
|
44 |
+
<meta name="ms.topic" content="conceptual" />
|
45 |
+
<meta name="original_content_git_url" content="https://github.com/MicrosoftDocs/azure-monitor-docs-pr/blob/live/articles/azure-monitor/insights/set-up-code-optimizations.md" />
|
46 |
+
<meta name="page_type" content="conceptual" />
|
47 |
+
<meta name="permissioned-type" content="public" />
|
48 |
+
<meta name="recommendation_types" content="Training" />
|
49 |
+
<meta name="recommendation_types" content="Certification" />
|
50 |
+
<meta name="recommendations" content="true" />
|
51 |
+
<meta name="schema" content="Conceptual" />
|
52 |
+
<meta name="site_name" content="Docs" />
|
53 |
+
<meta name="toc_rel" content="../toc.json" />
|
54 |
+
<meta name="uhfHeaderId" content="azure" />
|
55 |
+
<meta name="updated_at" content="2024-12-10 11:03 PM" />
|
56 |
+
<meta name="word_count" content="320" />
|
57 |
+
<meta name="persistent_id" content="344f9e36-272b-e88a-1060-123e5fe87c8d" />
|
58 |
+
|
59 |
+
<meta name="cmProducts" content="https://authoring-docs-microsoft.poolparty.biz/devrel/07bb3e10-d135-43ff-bc8b-360497cb39fa" data-source="generated" />
|
60 |
+
<meta name="cmProducts" content="https://authoring-docs-microsoft.poolparty.biz/devrel/7ebba99b-05c3-4387-8883-f7bbf6632cb8" data-source="generated" />
|
61 |
+
<meta name="cmProducts" content="https://authoring-docs-microsoft.poolparty.biz/devrel/68ec7f3a-2bc6-459f-b959-19beb729907d" data-source="generated" />
|
62 |
+
|
63 |
+
<meta name="spProducts" content="https://authoring-docs-microsoft.poolparty.biz/devrel/12e559b9-eaf6-4aee-9af7-62334e15f863" data-source="generated" />
|
64 |
+
<meta name="spProducts" content="https://authoring-docs-microsoft.poolparty.biz/devrel/006ab567-b18c-4cf1-9a25-c24daa46ede1" data-source="generated" />
|
65 |
+
<meta name="spProducts" content="https://authoring-docs-microsoft.poolparty.biz/devrel/90370425-aca4-4a39-9533-d52e5e002a5d" data-source="generated" />
|
66 |
+
<meta name="scope" content="Azure, Azure Monitor" /><meta name="github_feedback_content_git_url" content="https://github.com/MicrosoftDocs/azure-monitor-docs/blob/main/articles/azure-monitor/insights/set-up-code-optimizations.md" /><link href="https://learn.microsoft.com/en-us/azure/azure-monitor/insights/set-up-code-optimizations" rel="canonical"><title>Set up Code Optimizations - Azure Monitor | Microsoft Learn</title><link rel="stylesheet" href="/static/assets/0.4.029026183/styles/site-ltr.css">
|
67 |
+
|
68 |
+
<script id="msdocs-script">
|
69 |
+
var msDocs = {environment: {
|
70 |
+
supportLevel: 'production',
|
71 |
+
accessLevel: 'online',
|
72 |
+
reviewFeatures: false,
|
73 |
+
systemContent: true,
|
74 |
+
azurePortalHostname: 'portal.azure.com',
|
75 |
+
legacyHosting: false,
|
76 |
+
siteName: 'learn',
|
77 |
+
},data: {
|
78 |
+
timeOrigin: Date.now(),
|
79 |
+
contentLocale: 'en-us',
|
80 |
+
contentDir: 'ltr',
|
81 |
+
userLocale: 'en-us',
|
82 |
+
userDir: 'ltr',
|
83 |
+
pageTemplate: 'Conceptual',
|
84 |
+
brand: 'azure',
|
85 |
+
context: {},
|
86 |
+
hasBinaryRating: true,
|
87 |
+
feedbackHelpLinkType:'get-help-at-qna',
|
88 |
+
feedbackHelpLinkUrl:'https://learn.microsoft.com/answers/tags/20/azure-monitor/',
|
89 |
+
standardFeedback: true,
|
90 |
+
showFeedbackReport: false,
|
91 |
+
enableTutorialFeedback: false,
|
92 |
+
feedbackSystem: 'Standard',
|
93 |
+
feedbackGitHubRepo: 'MicrosoftDocs/azure-docs',
|
94 |
+
feedbackProductUrl: 'https://feedback.azure.com/d365community/forum/3887dc70-2025-ec11-b6e6-000d3a4f09d0',extendBreadcrumb: false,isEditDisplayable: true,
|
95 |
+
hideViewSource: false,
|
96 |
+
hasPageActions: true,
|
97 |
+
hasPrintButton: true,
|
98 |
+
hasBookmark: true,
|
99 |
+
hasShare: true,
|
100 |
+
isPermissioned: false,
|
101 |
+
isPrivateUnauthorized: false,hasRecommendations: true,contributors: [{ name: "hhunter-ms", url: "https://github.com/hhunter-ms" },{ name: "kainawroth", url: "https://github.com/kainawroth" }],},
|
102 |
+
functions:{}
|
103 |
+
};
|
104 |
+
</script><script src="https://wcpstatic.microsoft.com/mscc/lib/v2/wcp-consent.js"></script>
|
105 |
+
<script src="https://js.monitor.azure.com/scripts/c/ms.jsll-4.min.js"></script><script src="/static/assets/0.4.029026183/global/deprecation.js"></script><script src="/static/assets/0.4.029026183/scripts/en-us/index-docs.js"></script></head>
|
106 |
+
|
107 |
+
<body lang="en-us" dir="ltr">
|
108 |
+
<div class="header-holder has-default-focus">
|
109 |
+
<a href="#main" style="z-index: 1070" class="outline-color-text visually-hidden-until-focused position-fixed inner-focus focus-visible top-0 left-0 right-0 padding-xs text-align-center has-body-background" tabindex="1">Skip to main content</a><div hidden id="cookie-consent-holder" data-test-id="cookie-consent-container"></div>
|
110 |
+
|
111 |
+
<div id="unsupported-browser" style="
|
112 |
+
background-color: white;
|
113 |
+
color: black;
|
114 |
+
padding: 16px;
|
115 |
+
border-bottom: 1px solid grey;"
|
116 |
+
hidden
|
117 |
+
>
|
118 |
+
<div style="max-width: 800px; margin: 0 auto;">
|
119 |
+
<p style="font-size: 24px">This browser is no longer supported.</p>
|
120 |
+
<p style="font-size: 16px; margin-top: 16px;">Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.</p>
|
121 |
+
<div style="margin-top: 12px;">
|
122 |
+
<a href="https://go.microsoft.com/fwlink/p/?LinkID=2092881 "
|
123 |
+
style="
|
124 |
+
background-color: #0078d4;
|
125 |
+
border: 1px solid #0078d4;
|
126 |
+
color: white;
|
127 |
+
padding: 6px 12px;
|
128 |
+
border-radius: 2px;
|
129 |
+
display: inline-block;
|
130 |
+
">Download Microsoft Edge</a>
|
131 |
+
<a href="https://learn.microsoft.com/en-us/lifecycle/faq/internet-explorer-microsoft-edge"
|
132 |
+
style="
|
133 |
+
background-color: white;
|
134 |
+
padding: 6px 12px;
|
135 |
+
border: 1px solid #505050;
|
136 |
+
color: #171717;
|
137 |
+
border-radius: 2px;
|
138 |
+
display: inline-block;
|
139 |
+
">More info about Internet Explorer and Microsoft Edge</a>
|
140 |
+
</div>
|
141 |
+
</div>
|
142 |
+
</div>
|
143 |
+
<!-- liquid-tag banners global -->
|
144 |
+
|
145 |
+
<!-- site header -->
|
146 |
+
<header id="ms--site-header" data-test-id="site-header-wrapper" role="banner" itemscope="itemscope" itemtype="http://schema.org/Organization">
|
147 |
+
<div id="ms--mobile-nav" class="site-header display-none-tablet padding-inline-none gap-none" data-bi-name="mobile-header" data-test-id="mobile-header"></div>
|
148 |
+
<div id="ms--primary-nav" class="site-header display-none display-flex-tablet" data-bi-name="L1-header" data-test-id="primary-header"></div>
|
149 |
+
<div id="ms--secondary-nav" class="site-header display-none display-flex-tablet" data-bi-name="L2-header" data-test-id="secondary-header"></div>
|
150 |
+
</header><div id="content-header" class="content-header uhf-container has-padding has-default-focus border-bottom-none" data-bi-name="content-header">
|
151 |
+
<div class="content-header-controls margin-xxs margin-inline-sm-tablet">
|
152 |
+
<button type="button" class="contents-button button button-sm margin-right-xxs" data-bi-name="contents-expand" aria-haspopup="true" data-contents-button>
|
153 |
+
<span class="icon"><span class="docon docon-menu" aria-hidden="true"></span></span>
|
154 |
+
<span class="contents-expand-title">Table of contents</span>
|
155 |
+
</button>
|
156 |
+
<button type="button" class="ap-collapse-behavior ap-expanded button button-sm" data-bi-name="ap-collapse" aria-controls="action-panel">
|
157 |
+
<span class="icon"><span class="docon docon-exit-mode" aria-hidden="true"></span></span>
|
158 |
+
<span>Exit focus mode</span>
|
159 |
+
</button>
|
160 |
+
</div>
|
161 |
+
</div><div id="disclaimer-holder" class="has-overflow-hidden has-default-focus">
|
162 |
+
<!-- liquid-tag banners sectional -->
|
163 |
+
</div>
|
164 |
+
</div>
|
165 |
+
|
166 |
+
<div class="mainContainer uhf-container has-default-focus" data-bi-name="body">
|
167 |
+
|
168 |
+
<div class="columns has-large-gaps is-gapless-mobile "><div id="left-container" class="left-container is-hidden-mobile column is-one-third-tablet is-one-quarter-desktop">
|
169 |
+
<nav id="affixed-left-container" class="margin-top-sm-tablet position-sticky display-flex flex-direction-column" aria-label="Primary"></nav>
|
170 |
+
</div><!-- .primary-holder -->
|
171 |
+
<section class="primary-holder column is-two-thirds-tablet is-three-quarters-desktop">
|
172 |
+
<!--div.columns -->
|
173 |
+
<div class="columns is-gapless-mobile has-large-gaps "><div id="main-column" class="column is-full is-8-desktop">
|
174 |
+
|
175 |
+
<main id="main" class="" role="main" data-bi-name="content" lang="en-us" dir="ltr"><!-- article-header -->
|
176 |
+
<div id="article-header" class="background-color-body margin-top-sm-tablet margin-bottom-xs display-none-print">
|
177 |
+
<div class="display-flex align-items-center "><details id="article-header-breadcrumbs-overflow-popover" class="popover" data-for="article-header-breadcrumbs">
|
178 |
+
<summary class="button button-clear button-primary button-sm inner-focus" aria-label="All breadcrumbs">
|
179 |
+
<span class="icon">
|
180 |
+
<span class="docon docon-more"></span>
|
181 |
+
</span>
|
182 |
+
</summary>
|
183 |
+
<div id="article-header-breadcrumbs-overflow" class="popover-content padding-none">
|
184 |
+
|
185 |
+
</div>
|
186 |
+
</details>
|
187 |
+
|
188 |
+
<bread-crumbs id="article-header-breadcrumbs" data-test-id="article-header-breadcrumbs" class="overflow-hidden flex-grow-1 margin-right-sm margin-right-md-tablet margin-right-lg-desktop margin-left-negative-xxs padding-left-xxs"></bread-crumbs><div id="article-header-page-actions" class="opacity-none margin-left-auto display-flex flex-wrap-no-wrap align-items-stretch"><a
|
189 |
+
id="lang-link-tablet"
|
190 |
+
class="button button-primary button-clear button-sm display-none display-inline-flex-tablet"
|
191 |
+
title="Read in English" data-bi-name="language-toggle"
|
192 |
+
data-read-in-link
|
193 |
+
hidden>
|
194 |
+
<span class="icon margin-none" aria-hidden="true" data-read-in-link-icon>
|
195 |
+
<span class="docon docon-locale-globe"></span>
|
196 |
+
</span>
|
197 |
+
<span class="is-visually-hidden" data-read-in-link-text>Read in English</span>
|
198 |
+
</a><button
|
199 |
+
type="button"
|
200 |
+
class="collection button button-clear button-sm button-primary display-none display-inline-flex-tablet"
|
201 |
+
data-list-type="collection"
|
202 |
+
data-bi-name="collection"
|
203 |
+
title="Add to collection">
|
204 |
+
<span class="icon margin-none" aria-hidden="true">
|
205 |
+
<span class="docon docon-circle-addition"></span>
|
206 |
+
</span>
|
207 |
+
<span class="collection-status is-visually-hidden">Save</span>
|
208 |
+
</button><a data-contenteditbtn
|
209 |
+
class="button button-clear button-sm text-decoration-none button-primary display-none display-inline-flex-tablet"
|
210 |
+
aria-label="Edit"
|
211 |
+
title="Edit This Document"
|
212 |
+
data-bi-name="edit"
|
213 |
+
href="https://github.com/MicrosoftDocs/azure-monitor-docs/blob/main/articles/azure-monitor/insights/set-up-code-optimizations.md"
|
214 |
+
data-original_content_git_url="https://github.com/MicrosoftDocs/azure-monitor-docs-pr/blob/live/articles/azure-monitor/insights/set-up-code-optimizations.md"
|
215 |
+
data-original_content_git_url_template="{repo}/blob/{branch}/articles/azure-monitor/insights/set-up-code-optimizations.md"
|
216 |
+
data-pr_repo=""
|
217 |
+
data-pr_branch="">
|
218 |
+
<span class="icon margin-none" aria-hidden="true">
|
219 |
+
<span class="docon docon-edit-outline"></span>
|
220 |
+
</span>
|
221 |
+
</a>
|
222 |
+
<details class="popover popover-right" id="article-header-page-actions-overflow">
|
223 |
+
<summary class="justify-content-flex-start button button-clear button-sm button-primary" aria-label="More actions" title="More actions">
|
224 |
+
<span class="icon" aria-hidden="true">
|
225 |
+
<span class="docon docon-more-vertical"></span>
|
226 |
+
</span>
|
227 |
+
</summary>
|
228 |
+
<div class="popover-content padding-xs"><button
|
229 |
+
data-page-action-item="overflow-mobile"
|
230 |
+
type="button"
|
231 |
+
class="justify-content-flex-start button-block button-sm has-inner-focus button button-clear display-none-tablet"
|
232 |
+
data-bi-name="contents-expand"
|
233 |
+
data-contents-button
|
234 |
+
data-popover-close>
|
235 |
+
<span class="icon">
|
236 |
+
<span class="docon docon-editor-list-bullet" aria-hidden="true"></span>
|
237 |
+
</span><span class="contents-expand-title">Table of contents</span></button><a
|
238 |
+
id="lang-link-overflow"
|
239 |
+
class="justify-content-flex-start button-sm has-inner-focus button button-clear button-block display-none-tablet"
|
240 |
+
title="Read in English" data-bi-name="language-toggle"
|
241 |
+
data-page-action-item="overflow-mobile"
|
242 |
+
data-check-hidden="true"
|
243 |
+
data-read-in-link
|
244 |
+
hidden
|
245 |
+
>
|
246 |
+
<span class="icon" aria-hidden="true" data-read-in-link-icon>
|
247 |
+
<span class="docon docon-locale-globe"></span>
|
248 |
+
</span>
|
249 |
+
<span data-read-in-link-text>Read in English</span>
|
250 |
+
</a><button
|
251 |
+
type="button"
|
252 |
+
class="collection justify-content-flex-start button button-clear button-sm has-inner-focus button-block display-none-tablet"
|
253 |
+
data-list-type="collection"
|
254 |
+
data-bi-name="collection"
|
255 |
+
title="Save"
|
256 |
+
data-page-action-item="overflow-mobile"
|
257 |
+
data-check-hidden="true"
|
258 |
+
data-popover-close>
|
259 |
+
<span class="icon" aria-hidden="true">
|
260 |
+
<span class="docon docon-circle-addition"></span>
|
261 |
+
</span>
|
262 |
+
<span class="collection-status">Save</span>
|
263 |
+
</button>
|
264 |
+
|
265 |
+
|
266 |
+
<button
|
267 |
+
type="button"
|
268 |
+
class="collection justify-content-flex-start button button-clear button-sm has-inner-focus button-block display-none-tablet"
|
269 |
+
data-list-type="plan"
|
270 |
+
data-bi-name="plan"
|
271 |
+
title="Add to Plan"
|
272 |
+
data-page-action-item="overflow-mobile"
|
273 |
+
data-check-hidden="true"
|
274 |
+
data-popover-close
|
275 |
+
hidden>
|
276 |
+
<span class="icon" aria-hidden="true">
|
277 |
+
<span class="docon docon-circle-addition"></span>
|
278 |
+
</span>
|
279 |
+
<span class="plan-status">Add to Plan</span>
|
280 |
+
</button><a data-contenteditbtn
|
281 |
+
class="button button-clear button-block button-sm has-inner-focus justify-content-flex-start text-decoration-none display-none-tablet"
|
282 |
+
aria-label="Edit"
|
283 |
+
title="Edit This Document"
|
284 |
+
data-bi-name="edit"
|
285 |
+
href="https://github.com/MicrosoftDocs/azure-monitor-docs/blob/main/articles/azure-monitor/insights/set-up-code-optimizations.md"
|
286 |
+
data-original_content_git_url="https://github.com/MicrosoftDocs/azure-monitor-docs-pr/blob/live/articles/azure-monitor/insights/set-up-code-optimizations.md"
|
287 |
+
data-original_content_git_url_template="{repo}/blob/{branch}/articles/azure-monitor/insights/set-up-code-optimizations.md"
|
288 |
+
data-pr_repo=""
|
289 |
+
data-pr_branch="">
|
290 |
+
<span class="icon" aria-hidden="true">
|
291 |
+
<span class="docon docon-edit-outline"></span>
|
292 |
+
</span>
|
293 |
+
<span>Edit</span>
|
294 |
+
</a><div aria-hidden="true" class="margin-none" data-page-action-item="overflow-all"></div>
|
295 |
+
<hr class="display-none-tablet margin-bottom-xxs margin-top-xxs" />
|
296 |
+
<h4 class="font-size-sm padding-left-xxs">Share via</h4>
|
297 |
+
|
298 |
+
<a class="button button-clear button-sm button-block has-inner-focus text-decoration-none justify-content-flex-start share-facebook" data-bi-name="facebook" data-page-action-item="overflow-all">
|
299 |
+
<span class="icon" aria-hidden="true">
|
300 |
+
<span class="docon docon-facebook-share font-size-md color-primary"></span>
|
301 |
+
</span>
|
302 |
+
<span class="margin-left-xxs">Facebook</span>
|
303 |
+
</a>
|
304 |
+
<a class="button button-clear button-sm has-inner-focus button-block text-decoration-none justify-content-flex-start share-twitter" data-bi-name="twitter" data-page-action-item="overflow-all">
|
305 |
+
<span class="icon" aria-hidden="true">
|
306 |
+
<span class="docon docon-xlogo-share font-size-xxs"></span>
|
307 |
+
</span>
|
308 |
+
<span class="margin-left-xxs">x.com</span>
|
309 |
+
</a>
|
310 |
+
<a class="button button-clear button-sm has-inner-focus button-block text-decoration-none justify-content-flex-start share-linkedin" data-bi-name="linkedin" data-page-action-item="overflow-all">
|
311 |
+
<span class="icon" aria-hidden="true">
|
312 |
+
<span class="docon docon-linked-in-logo font-size-sm color-primary"></span>
|
313 |
+
</span>
|
314 |
+
<span class="margin-left-xxs">LinkedIn</span>
|
315 |
+
</a>
|
316 |
+
<a class="button button-clear button-sm button-block has-inner-focus text-decoration-none justify-content-flex-start margin-bottom-xxs share-email" data-bi-name="email" data-page-action-item="overflow-all">
|
317 |
+
<span class="icon" aria-hidden="true">
|
318 |
+
<span class="docon docon-mail-message font-size-sm color-primary"></span>
|
319 |
+
</span>
|
320 |
+
<span class="margin-left-xxs">Email</span>
|
321 |
+
</a><hr />
|
322 |
+
<button
|
323 |
+
class="button button-block button-clear button-sm justify-content-flex-start has-inner-focus margin-top-xxs"
|
324 |
+
title="Print"
|
325 |
+
type="button"
|
326 |
+
aria-label="Print"
|
327 |
+
data-bi-name="print"
|
328 |
+
data-page-action-item="overflow-all"
|
329 |
+
data-popover-close
|
330 |
+
data-print-page
|
331 |
+
data-check-hidden="true">
|
332 |
+
<span class="icon" aria-hidden="true">
|
333 |
+
<span class="docon docon-print font-size-sm color-primary"></span>
|
334 |
+
</span>
|
335 |
+
<span class="margin-left-xxs">Print</span>
|
336 |
+
</button>
|
337 |
+
</div>
|
338 |
+
</details>
|
339 |
+
|
340 |
+
</div></div>
|
341 |
+
</div>
|
342 |
+
<!-- end article-header --><div>
|
343 |
+
<button type="button" class="border contents-button button button-clear button-sm is-hidden-tablet has-inner-focus" data-bi-name="contents-expand" data-contents-button hidden>
|
344 |
+
<span class="icon">
|
345 |
+
<span class="docon docon-editor-list-bullet" aria-hidden="true"></span>
|
346 |
+
</span><span class="contents-expand-title">Table of contents</span></button>
|
347 |
+
</div><!-- end mobile-contents button -->
|
348 |
+
|
349 |
+
<div class="content "><h1 id="set-up-code-optimizations">Set up Code Optimizations</h1><div class="display-flex justify-content-space-between align-items-center flex-wrap-wrap page-metadata-container">
|
350 |
+
<div class="margin-right-xxs">
|
351 |
+
<ul class="metadata page-metadata" data-bi-name="page info" lang="en-us" dir="ltr"><li>Article</li><li class="visibility-hidden-visual-diff"><time class="is-invisible" data-article-date aria-label="Article review date" datetime="2024-12-10T23:03:00Z" data-article-date-source="calculated">12/10/2024</time>
|
352 |
+
</li><li class="contributors-holder display-none-print">
|
353 |
+
<button aria-label="View all contributors" class="contributors-button link-button" data-bi-name="contributors" title="View all contributors">2 contributors</button>
|
354 |
+
</li></ul>
|
355 |
+
</div>
|
356 |
+
<div id="user-feedback" class="margin-block-xxs display-none-print" data-hide-on-archived>
|
357 |
+
<button
|
358 |
+
id="user-feedback-button"
|
359 |
+
data-test-id="conceptual-feedback-button"
|
360 |
+
class="button button-sm button-clear button-primary"
|
361 |
+
type="button"
|
362 |
+
data-bi-name="user-feedback-button"
|
363 |
+
data-user-feedback-button
|
364 |
+
>
|
365 |
+
<span class="icon" aria-hidden="true">
|
366 |
+
<span class="docon docon-like"></span>
|
367 |
+
</span>
|
368 |
+
<span>Feedback</span>
|
369 |
+
</button>
|
370 |
+
</div></div><nav id="center-doc-outline" class="doc-outline is-hidden-desktop display-none-print margin-bottom-sm" data-bi-name="intopic toc" aria-label="In this article">
|
371 |
+
<h2 id="ms--in-this-article" class="title is-6 margin-block-xs">In this article</h2>
|
372 |
+
</nav><!-- <content> --><p>Setting up Code Optimizations to identify and analyze CPU and memory bottlenecks in your web applications is a simple process in the Azure portal. In this guide, you learn how to:</p>
|
373 |
+
<ul>
|
374 |
+
<li>Connect your web app to Application Insights.</li>
|
375 |
+
<li>Enable the .NET Profiler on your web app.</li>
|
376 |
+
</ul>
|
377 |
+
<p><a href="https://aka.ms/codeoptimizations" data-linktype="external">You can review your Code Optimizations in the Azure portal.</a></p>
|
378 |
+
<h2 id="demo-video">Demo video</h2>
|
379 |
+
<div class="embeddedvideo"><iframe src="https://www.youtube-nocookie.com/embed/vbi9YQgIgC8" frameborder="0" allowfullscreen="true" data-linktype="external"></iframe></div>
|
380 |
+
<h2 id="connect-your-web-app-to-application-insights">Connect your web app to Application Insights</h2>
|
381 |
+
<p>Before setting up Code Optimizations for your web app, ensure that your app is connected to an Application Insights resource.</p>
|
382 |
+
<ol>
|
383 |
+
<li><p>In the Azure portal, navigate to your web application.</p>
|
384 |
+
</li>
|
385 |
+
<li><p>From the left menu, select <strong>Settings</strong> > <strong>Application Insights</strong>.</p>
|
386 |
+
</li>
|
387 |
+
<li><p>In the Application Insights blade for your web application, determine the following options:</p>
|
388 |
+
<ul>
|
389 |
+
<li><p><strong>If your web app is already connected to an Application Insights resource:</strong></p>
|
390 |
+
<ul>
|
391 |
+
<li><p>A banner at the top of the blade reads: <strong>Your app is connected to Application Insights resource: {NAME-OF-RESOURCE}</strong>.</p>
|
392 |
+
<p><span class="mx-imgBorder">
|
393 |
+
<img src="media/set-up-code-optimizations/already-enabled-app-insights.png" alt="Screenshot of the banner explaining that your app is already connected to App Insights." data-linktype="relative-path">
|
394 |
+
</span>
|
395 |
+
</p>
|
396 |
+
</li>
|
397 |
+
</ul>
|
398 |
+
</li>
|
399 |
+
<li><p><strong>If your web app still needs to be connected to an Application Insights resource:</strong></p>
|
400 |
+
<ul>
|
401 |
+
<li><p>A banner at the top of the blade reads: <strong>Your app will be connected to an auto-created Application Insights resource: {NAME-OF-RESOURCE}</strong>.</p>
|
402 |
+
<p><span class="mx-imgBorder">
|
403 |
+
<img src="media/set-up-code-optimizations/need-to-enable-app-insights.png" alt="Screenshot of the banner telling you to enable App Insights and the name of the App Insights resource." data-linktype="relative-path">
|
404 |
+
</span>
|
405 |
+
</p>
|
406 |
+
</li>
|
407 |
+
</ul>
|
408 |
+
</li>
|
409 |
+
</ul>
|
410 |
+
</li>
|
411 |
+
<li><p>Click <strong>Apply</strong> at the bottom of the Application Insights pane.</p>
|
412 |
+
</li>
|
413 |
+
</ol>
|
414 |
+
<h2 id="enable-the-net-profiler-on-your-web-app">Enable the .NET Profiler on your web app</h2>
|
415 |
+
<p>The .NET Profiler collects traces on your web app for Code Optimizations to analyze. In a few hours, if Code Optimization notices any performance bottlenecks in your application, you can see and review Code Optimizations insights.</p>
|
416 |
+
<ol>
|
417 |
+
<li><p>Still in the Application Insights blade, under <strong>Instrument your application</strong>, select the <strong>.NET</strong> tab.</p>
|
418 |
+
</li>
|
419 |
+
<li><p>Under <strong>Profiler</strong>, select the toggle to turn on the .NET Profiler for your web app.</p>
|
420 |
+
<p><span class="mx-imgBorder">
|
421 |
+
<img src="media/set-up-code-optimizations/enable-profiler.png" alt="Screenshot of how to enable .NET Profiler for your web app." data-linktype="relative-path">
|
422 |
+
</span>
|
423 |
+
</p>
|
424 |
+
</li>
|
425 |
+
<li><p>Verify the .NET Profiler is collecting traces.</p>
|
426 |
+
<ol>
|
427 |
+
<li>Navigate to your Application Insights resource.</li>
|
428 |
+
<li>From the left menu, select <strong>Investigate</strong> > <strong>Performance</strong>.</li>
|
429 |
+
<li>In the Performance blade, select <strong>Profiler</strong> from the top menu.</li>
|
430 |
+
<li>Review the profiler traces collected from your web app. <a href="../profiler/profiler-troubleshooting" data-linktype="relative-path">If you don't see any traces, see the troubleshooting guide</a>.</li>
|
431 |
+
</ol>
|
432 |
+
</li>
|
433 |
+
</ol>
|
434 |
+
<h2 id="next-steps">Next steps</h2>
|
435 |
+
<div class="nextstepaction">
|
436 |
+
<p><a href="view-code-optimizations" data-linktype="relative-path">View Code Optimizations results</a></p>
|
437 |
+
</div>
|
438 |
+
</div><div id="ms--inline-notifications" class="margin-block-xs" data-bi-name="inline-notification"></div><div id="assertive-live-region" role="alert" aria-live="assertive" class="visually-hidden" aria-relevant="additions" aria-atomic="true"></div>
|
439 |
+
<div id="polite-live-region" role="status" aria-live="polite" class="visually-hidden" aria-relevant="additions" aria-atomic="true"></div>
|
440 |
+
<!-- </content> -->
|
441 |
+
|
442 |
+
</main><!-- recommendations section --><!-- end recommendations section -->
|
443 |
+
|
444 |
+
<!-- feedback section --><section id="site-user-feedback-footer" class="font-size-sm margin-top-md" data-test-id="site-user-feedback-footer" data-bi-name="site-feedback-section">
|
445 |
+
<hr class="hr" />
|
446 |
+
<h2 id="feedback" class="title is-3">Feedback</h2>
|
447 |
+
<div class="display-flex flex-wrap-wrap align-items-center">
|
448 |
+
<p class="font-weight-semibold margin-xxs margin-left-none">Was this page helpful?</p>
|
449 |
+
<div class="buttons">
|
450 |
+
<button
|
451 |
+
class="thumb-rating-button like button button-primary button-sm"
|
452 |
+
data-test-id="footer-rating-yes"
|
453 |
+
data-binary-rating-response="rating-yes"
|
454 |
+
type="button"
|
455 |
+
title="This article is helpful"
|
456 |
+
data-bi-name="button-rating-yes"
|
457 |
+
aria-pressed="false"
|
458 |
+
>
|
459 |
+
<span class="icon" aria-hidden="true">
|
460 |
+
<span class="docon docon-like"></span>
|
461 |
+
</span>
|
462 |
+
<span>Yes</span>
|
463 |
+
</button>
|
464 |
+
<button
|
465 |
+
class="thumb-rating-button dislike button button-primary button-sm"
|
466 |
+
data-test-id="footer-rating-no"
|
467 |
+
data-binary-rating-response="rating-no"
|
468 |
+
type="button"
|
469 |
+
title="This article is not helpful"
|
470 |
+
data-bi-name="button-rating-no"
|
471 |
+
aria-pressed="false"
|
472 |
+
>
|
473 |
+
<span class="icon" aria-hidden="true">
|
474 |
+
<span class="docon docon-dislike"></span>
|
475 |
+
</span>
|
476 |
+
<span>No</span>
|
477 |
+
</button>
|
478 |
+
</div>
|
479 |
+
</div><div class="display-flex flex-wrap-wrap margin-top-xxs"><div>
|
480 |
+
<a
|
481 |
+
data-bi-name="provide-feedback-cta"
|
482 |
+
class="has-external-link-indicator"
|
483 |
+
href="https://feedback.azure.com/d365community/forum/3887dc70-2025-ec11-b6e6-000d3a4f09d0"
|
484 |
+
data-bi-name="product-feedback"
|
485 |
+
>
|
486 |
+
<span>Provide product feedback</span>
|
487 |
+
</a><span class="margin-inline-xxs" aria-hidden="true">|</span></div><a href="https://learn.microsoft.com/answers/tags/20/azure-monitor/" class="has-external-link-indicator" data-bi-name="get-help-at-qna">
|
488 |
+
<span>Get help at Microsoft Q&A</span>
|
489 |
+
</a></div>
|
490 |
+
|
491 |
+
</section><!-- end feedback section -->
|
492 |
+
|
493 |
+
<!-- feedback report section --><!-- end feedback report section --><aside
|
494 |
+
id="ms--additional-resources-mobile"
|
495 |
+
aria-label="Additional resources"
|
496 |
+
class="display-none-desktop display-none-print"
|
497 |
+
>
|
498 |
+
<hr class="hr" hidden />
|
499 |
+
<h2 id="ms--additional-resources-mobile-heading" class="title is-3" hidden>Additional resources</h2>
|
500 |
+
<section id="right-rail-recommendations-mobile" data-bi-name="recommendations" hidden></section>
|
501 |
+
<section id="right-rail-training-mobile" data-bi-name="learning-resources-card" hidden></section>
|
502 |
+
<section id="right-rail-events-mobile" data-bi-name="events-card" hidden></section>
|
503 |
+
<section id="right-rail-qna-mobile" data-bi-name="qna-link-card" hidden></section>
|
504 |
+
</aside><div class="border-top is-visible-interactive has-default-focus margin-top-sm "><footer id="footer-interactive" data-bi-name="footer" class="footer-layout"><div class="display-flex gap-xs flex-wrap-wrap is-full-height padding-right-lg-desktop"><a
|
505 |
+
data-mscc-ic="false"
|
506 |
+
class="locale-selector-link button button-sm button-clear flex-shrink-0"
|
507 |
+
href="#"
|
508 |
+
data-bi-name="select-locale">
|
509 |
+
<span class="icon" aria-hidden="true">
|
510 |
+
<span class="docon docon-world"></span>
|
511 |
+
</span>
|
512 |
+
<span class="local-selector-link-text"></span></a><div class="ccpa-privacy-link" data-ccpa-privacy-link hidden>
|
513 |
+
<a
|
514 |
+
href="https://aka.ms/yourcaliforniaprivacychoices"
|
515 |
+
class="button button-sm button-clear flex-shrink-0"
|
516 |
+
data-mscc-ic="false"
|
517 |
+
data-bi-name="your-privacy-choices"
|
518 |
+
>
|
519 |
+
<svg
|
520 |
+
role="img"
|
521 |
+
aria-label="California Consumer Privacy Act (CCPA) Opt-Out Icon"
|
522 |
+
xmlns="http://www.w3.org/2000/svg"
|
523 |
+
viewBox="0 0 30 14"
|
524 |
+
xml:space="preserve"
|
525 |
+
height="16"
|
526 |
+
width="43"
|
527 |
+
focusable="false"
|
528 |
+
>
|
529 |
+
<title>California Consumer Privacy Act (CCPA) Opt-Out Icon</title>
|
530 |
+
<path d="M7.4 12.8h6.8l3.1-11.6H7.4C4.2 1.2 1.6 3.8 1.6 7s2.6 5.8 5.8 5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#fff"></path>
|
531 |
+
<path d="M22.6 0H7.4c-3.9 0-7 3.1-7 7s3.1 7 7 7h15.2c3.9 0 7-3.1 7-7s-3.2-7-7-7zm-21 7c0-3.2 2.6-5.8 5.8-5.8h9.9l-3.1 11.6H7.4c-3.2 0-5.8-2.6-5.8-5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#06f"></path>
|
532 |
+
<path d="M24.6 4c.2.2.2.6 0 .8L22.5 7l2.2 2.2c.2.2.2.6 0 .8-.2.2-.6.2-.8 0l-2.2-2.2-2.2 2.2c-.2.2-.6.2-.8 0-.2-.2-.2-.6 0-.8L20.8 7l-2.2-2.2c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0l2.2 2.2L23.8 4c.2-.2.6-.2.8 0z" style="fill:#fff"></path>
|
533 |
+
<path d="M12.7 4.1c.2.2.3.6.1.8L8.6 9.8c-.1.1-.2.2-.3.2-.2.1-.5.1-.7-.1L5.4 7.7c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0L8 8.6l3.8-4.5c.2-.2.6-.2.9 0z" style="fill:#06f"></path>
|
534 |
+
</svg>
|
535 |
+
<span>Your Privacy Choices</span>
|
536 |
+
</a>
|
537 |
+
|
538 |
+
</div>
|
539 |
+
<div class="flex-shrink-0">
|
540 |
+
<div class="dropdown has-caret-up">
|
541 |
+
<button class="dropdown-trigger button button-clear button-sm has-inner-focus theme-dropdown-trigger"
|
542 |
+
aria-controls="theme-menu-interactive" aria-expanded="false" title="Theme" data-bi-name="theme">
|
543 |
+
<span class="icon">
|
544 |
+
<span class="docon docon-sun" aria-hidden="true"></span>
|
545 |
+
</span>
|
546 |
+
<span>Theme</span>
|
547 |
+
<span class="icon expanded-indicator" aria-hidden="true">
|
548 |
+
<span class="docon docon-chevron-down-light"></span>
|
549 |
+
</span>
|
550 |
+
</button>
|
551 |
+
<div class="dropdown-menu" id="theme-menu-interactive" role="menu">
|
552 |
+
<ul class="theme-selector padding-xxs" role="none">
|
553 |
+
<li class="theme display-block" role="menuitem">
|
554 |
+
<button class="button button-clear button-sm theme-control button-block justify-content-flex-start"
|
555 |
+
data-theme-to="light">
|
556 |
+
<span class="theme-light margin-right-xxs">
|
557 |
+
<span
|
558 |
+
class="theme-selector-icon border display-inline-block has-body-background"
|
559 |
+
aria-hidden="true">
|
560 |
+
<svg class="svg" xmlns="http://www.w3.org/2000/svg"
|
561 |
+
viewBox="0 0 22 14">
|
562 |
+
<rect width="22" height="14" class="has-fill-body-background" />
|
563 |
+
<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
|
564 |
+
<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
|
565 |
+
<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
|
566 |
+
<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
|
567 |
+
<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
|
568 |
+
<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
|
569 |
+
<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
|
570 |
+
</svg>
|
571 |
+
</span>
|
572 |
+
</span>
|
573 |
+
<span>Light</span>
|
574 |
+
</button>
|
575 |
+
</li>
|
576 |
+
<li class="theme display-block" role="menuitem">
|
577 |
+
<button class="button button-clear button-sm theme-control button-block justify-content-flex-start"
|
578 |
+
data-theme-to="dark">
|
579 |
+
<span class="theme-dark margin-right-xxs">
|
580 |
+
<span
|
581 |
+
class="border theme-selector-icon display-inline-block has-body-background"
|
582 |
+
aria-hidden="true">
|
583 |
+
<svg class="svg" xmlns="http://www.w3.org/2000/svg"
|
584 |
+
viewBox="0 0 22 14">
|
585 |
+
<rect width="22" height="14" class="has-fill-body-background" />
|
586 |
+
<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
|
587 |
+
<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
|
588 |
+
<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
|
589 |
+
<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
|
590 |
+
<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
|
591 |
+
<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
|
592 |
+
<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
|
593 |
+
</svg>
|
594 |
+
</span>
|
595 |
+
</span>
|
596 |
+
<span>Dark</span>
|
597 |
+
</button>
|
598 |
+
</li>
|
599 |
+
<li class="theme display-block" role="menuitem">
|
600 |
+
<button class="button button-clear button-sm theme-control button-block justify-content-flex-start"
|
601 |
+
data-theme-to="high-contrast">
|
602 |
+
<span class="theme-high-contrast margin-right-xxs">
|
603 |
+
<span
|
604 |
+
class="border theme-selector-icon display-inline-block has-body-background"
|
605 |
+
aria-hidden="true">
|
606 |
+
<svg class="svg" xmlns="http://www.w3.org/2000/svg"
|
607 |
+
viewBox="0 0 22 14">
|
608 |
+
<rect width="22" height="14" class="has-fill-body-background" />
|
609 |
+
<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
|
610 |
+
<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
|
611 |
+
<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
|
612 |
+
<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
|
613 |
+
<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
|
614 |
+
<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
|
615 |
+
<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
|
616 |
+
</svg>
|
617 |
+
</span>
|
618 |
+
</span>
|
619 |
+
<span>High contrast</span>
|
620 |
+
</button>
|
621 |
+
</li>
|
622 |
+
</ul>
|
623 |
+
</div>
|
624 |
+
</div>
|
625 |
+
|
626 |
+
</div>
|
627 |
+
</div>
|
628 |
+
<ul class="links" data-bi-name="footerlinks">
|
629 |
+
<li class="manage-cookies-holder" hidden></li><li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/previous-versions/" data-bi-name="archivelink">Previous Versions</a></li>
|
630 |
+
<li><a class="external-link-indicator" data-mscc-ic="false" href="https://techcommunity.microsoft.com/t5/microsoft-learn-blog/bg-p/MicrosoftLearnBlog" data-bi-name="bloglink">Blog</a></li>
|
631 |
+
<li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/contribute/" data-bi-name="contributorGuide">Contribute</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="https://go.microsoft.com/fwlink/?LinkId=521839" data-bi-name="privacy">Privacy</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/legal/termsofuse" data-bi-name="termsofuse">Terms of Use</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="https://www.microsoft.com/legal/intellectualproperty/Trademarks/" data-bi-name="trademarks">Trademarks</a></li><li>© Microsoft 2024</li>
|
632 |
+
</ul>
|
633 |
+
</footer></div></div><div
|
634 |
+
id="ms--additional-resources"
|
635 |
+
class="right-container column is-4-desktop display-none display-block-desktop"
|
636 |
+
data-bi-name="pageactions"
|
637 |
+
role="complementary"
|
638 |
+
aria-label="Additional resources"
|
639 |
+
>
|
640 |
+
<div id="affixed-right-container" class="margin-top-sm-tablet" data-bi-name="right-column">
|
641 |
+
<h2 id="ms--additional-resources-heading" class="title is-6 margin-top-md" hidden>Additional resources</h2>
|
642 |
+
<section id="right-rail-events" data-bi-name="events-card" hidden></section>
|
643 |
+
<section id="right-rail-training" data-bi-name="learning-resources-card" hidden></section>
|
644 |
+
<section id="right-rail-recommendations" data-bi-name="recommendations" hidden></section>
|
645 |
+
<nav id="side-doc-outline" class="doc-outline" data-bi-name="intopic toc" aria-label="In this article">
|
646 |
+
<h3>In this article</h3>
|
647 |
+
</nav>
|
648 |
+
<section id="right-rail-qna" class="margin-top-xxs" data-bi-name="qna-link-card" hidden></section>
|
649 |
+
</div>
|
650 |
+
</div></div>
|
651 |
+
<!--end of div.columns -->
|
652 |
+
|
653 |
+
</section>
|
654 |
+
<!--end of .primary-holder -->
|
655 |
+
|
656 |
+
<!-- interactive container -->
|
657 |
+
<aside id="interactive-container" class="interactive-container is-visible-interactive column has-body-background-dark ">
|
658 |
+
</aside>
|
659 |
+
<!-- end of interactive container -->
|
660 |
+
</div>
|
661 |
+
|
662 |
+
</div>
|
663 |
+
<!--end of .mainContainer -->
|
664 |
+
|
665 |
+
<section class="border-top has-default-focus is-hidden-interactive margin-top-sm "><footer id="footer" data-bi-name="footer" class="footer-layout uhf-container has-padding" role="contentinfo"><div class="display-flex gap-xs flex-wrap-wrap is-full-height padding-right-lg-desktop"><a
|
666 |
+
data-mscc-ic="false"
|
667 |
+
class="locale-selector-link button button-sm button-clear flex-shrink-0"
|
668 |
+
href="#"
|
669 |
+
data-bi-name="select-locale">
|
670 |
+
<span class="icon" aria-hidden="true">
|
671 |
+
<span class="docon docon-world"></span>
|
672 |
+
</span>
|
673 |
+
<span class="local-selector-link-text"></span></a><div class="ccpa-privacy-link" data-ccpa-privacy-link hidden>
|
674 |
+
<a
|
675 |
+
href="https://aka.ms/yourcaliforniaprivacychoices"
|
676 |
+
class="button button-sm button-clear flex-shrink-0"
|
677 |
+
data-mscc-ic="false"
|
678 |
+
data-bi-name="your-privacy-choices"
|
679 |
+
>
|
680 |
+
<svg
|
681 |
+
role="img"
|
682 |
+
aria-label="California Consumer Privacy Act (CCPA) Opt-Out Icon"
|
683 |
+
xmlns="http://www.w3.org/2000/svg"
|
684 |
+
viewBox="0 0 30 14"
|
685 |
+
xml:space="preserve"
|
686 |
+
height="16"
|
687 |
+
width="43"
|
688 |
+
focusable="false"
|
689 |
+
>
|
690 |
+
<title>California Consumer Privacy Act (CCPA) Opt-Out Icon</title>
|
691 |
+
<path d="M7.4 12.8h6.8l3.1-11.6H7.4C4.2 1.2 1.6 3.8 1.6 7s2.6 5.8 5.8 5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#fff"></path>
|
692 |
+
<path d="M22.6 0H7.4c-3.9 0-7 3.1-7 7s3.1 7 7 7h15.2c3.9 0 7-3.1 7-7s-3.2-7-7-7zm-21 7c0-3.2 2.6-5.8 5.8-5.8h9.9l-3.1 11.6H7.4c-3.2 0-5.8-2.6-5.8-5.8z" style="fill-rule:evenodd;clip-rule:evenodd;fill:#06f"></path>
|
693 |
+
<path d="M24.6 4c.2.2.2.6 0 .8L22.5 7l2.2 2.2c.2.2.2.6 0 .8-.2.2-.6.2-.8 0l-2.2-2.2-2.2 2.2c-.2.2-.6.2-.8 0-.2-.2-.2-.6 0-.8L20.8 7l-2.2-2.2c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0l2.2 2.2L23.8 4c.2-.2.6-.2.8 0z" style="fill:#fff"></path>
|
694 |
+
<path d="M12.7 4.1c.2.2.3.6.1.8L8.6 9.8c-.1.1-.2.2-.3.2-.2.1-.5.1-.7-.1L5.4 7.7c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0L8 8.6l3.8-4.5c.2-.2.6-.2.9 0z" style="fill:#06f"></path>
|
695 |
+
</svg>
|
696 |
+
<span>Your Privacy Choices</span>
|
697 |
+
</a>
|
698 |
+
|
699 |
+
</div>
|
700 |
+
<div class="flex-shrink-0">
|
701 |
+
<div class="dropdown has-caret-up">
|
702 |
+
<button class="dropdown-trigger button button-clear button-sm has-inner-focus theme-dropdown-trigger"
|
703 |
+
aria-controls="theme-menu" aria-expanded="false" title="Theme" data-bi-name="theme">
|
704 |
+
<span class="icon">
|
705 |
+
<span class="docon docon-sun" aria-hidden="true"></span>
|
706 |
+
</span>
|
707 |
+
<span>Theme</span>
|
708 |
+
<span class="icon expanded-indicator" aria-hidden="true">
|
709 |
+
<span class="docon docon-chevron-down-light"></span>
|
710 |
+
</span>
|
711 |
+
</button>
|
712 |
+
<div class="dropdown-menu" id="theme-menu" role="menu">
|
713 |
+
<ul class="theme-selector padding-xxs" role="none">
|
714 |
+
<li class="theme display-block" role="menuitem">
|
715 |
+
<button class="button button-clear button-sm theme-control button-block justify-content-flex-start"
|
716 |
+
data-theme-to="light">
|
717 |
+
<span class="theme-light margin-right-xxs">
|
718 |
+
<span
|
719 |
+
class="theme-selector-icon border display-inline-block has-body-background"
|
720 |
+
aria-hidden="true">
|
721 |
+
<svg class="svg" xmlns="http://www.w3.org/2000/svg"
|
722 |
+
viewBox="0 0 22 14">
|
723 |
+
<rect width="22" height="14" class="has-fill-body-background" />
|
724 |
+
<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
|
725 |
+
<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
|
726 |
+
<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
|
727 |
+
<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
|
728 |
+
<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
|
729 |
+
<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
|
730 |
+
<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
|
731 |
+
</svg>
|
732 |
+
</span>
|
733 |
+
</span>
|
734 |
+
<span>Light</span>
|
735 |
+
</button>
|
736 |
+
</li>
|
737 |
+
<li class="theme display-block" role="menuitem">
|
738 |
+
<button class="button button-clear button-sm theme-control button-block justify-content-flex-start"
|
739 |
+
data-theme-to="dark">
|
740 |
+
<span class="theme-dark margin-right-xxs">
|
741 |
+
<span
|
742 |
+
class="border theme-selector-icon display-inline-block has-body-background"
|
743 |
+
aria-hidden="true">
|
744 |
+
<svg class="svg" xmlns="http://www.w3.org/2000/svg"
|
745 |
+
viewBox="0 0 22 14">
|
746 |
+
<rect width="22" height="14" class="has-fill-body-background" />
|
747 |
+
<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
|
748 |
+
<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
|
749 |
+
<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
|
750 |
+
<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
|
751 |
+
<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
|
752 |
+
<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
|
753 |
+
<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
|
754 |
+
</svg>
|
755 |
+
</span>
|
756 |
+
</span>
|
757 |
+
<span>Dark</span>
|
758 |
+
</button>
|
759 |
+
</li>
|
760 |
+
<li class="theme display-block" role="menuitem">
|
761 |
+
<button class="button button-clear button-sm theme-control button-block justify-content-flex-start"
|
762 |
+
data-theme-to="high-contrast">
|
763 |
+
<span class="theme-high-contrast margin-right-xxs">
|
764 |
+
<span
|
765 |
+
class="border theme-selector-icon display-inline-block has-body-background"
|
766 |
+
aria-hidden="true">
|
767 |
+
<svg class="svg" xmlns="http://www.w3.org/2000/svg"
|
768 |
+
viewBox="0 0 22 14">
|
769 |
+
<rect width="22" height="14" class="has-fill-body-background" />
|
770 |
+
<rect x="5" y="5" width="12" height="4" class="has-fill-secondary" />
|
771 |
+
<rect x="5" y="2" width="2" height="1" class="has-fill-secondary" />
|
772 |
+
<rect x="8" y="2" width="2" height="1" class="has-fill-secondary" />
|
773 |
+
<rect x="11" y="2" width="3" height="1" class="has-fill-secondary" />
|
774 |
+
<rect x="1" y="1" width="2" height="2" class="has-fill-secondary" />
|
775 |
+
<rect x="5" y="10" width="7" height="2" rx="0.3" class="has-fill-primary" />
|
776 |
+
<rect x="19" y="1" width="2" height="2" rx="1" class="has-fill-secondary" />
|
777 |
+
</svg>
|
778 |
+
</span>
|
779 |
+
</span>
|
780 |
+
<span>High contrast</span>
|
781 |
+
</button>
|
782 |
+
</li>
|
783 |
+
</ul>
|
784 |
+
</div>
|
785 |
+
</div>
|
786 |
+
|
787 |
+
</div>
|
788 |
+
</div>
|
789 |
+
<ul class="links" data-bi-name="footerlinks">
|
790 |
+
<li class="manage-cookies-holder" hidden></li><li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/previous-versions/" data-bi-name="archivelink">Previous Versions</a></li>
|
791 |
+
<li><a class="external-link-indicator" data-mscc-ic="false" href="https://techcommunity.microsoft.com/t5/microsoft-learn-blog/bg-p/MicrosoftLearnBlog" data-bi-name="bloglink">Blog</a></li>
|
792 |
+
<li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/contribute/" data-bi-name="contributorGuide">Contribute</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="https://go.microsoft.com/fwlink/?LinkId=521839" data-bi-name="privacy">Privacy</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="/en-us/legal/termsofuse" data-bi-name="termsofuse">Terms of Use</a></li><li><a class="external-link-indicator" data-mscc-ic="false" href="https://www.microsoft.com/legal/intellectualproperty/Trademarks/" data-bi-name="trademarks">Trademarks</a></li><li>© Microsoft 2024</li>
|
793 |
+
</ul>
|
794 |
+
</footer>
|
795 |
+
|
796 |
+
</section>
|
797 |
+
|
798 |
+
<div id="action-panel" role="region" aria-label="Action Panel" class="action-panel has-default-focus" tabindex="-1"></div>
|
799 |
+
</body>
|
800 |
+
</html>
|
ultimatethinking.txt
ADDED
@@ -0,0 +1,356 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import asyncio
|
2 |
+
import json
|
3 |
+
import logging
|
4 |
+
import os
|
5 |
+
from typing import List, Dict, Any
|
6 |
+
from cryptography.fernet import Fernet
|
7 |
+
from botbuilder.core import StatePropertyAccessor, TurnContext
|
8 |
+
from botbuilder.dialogs import Dialog, DialogSet, DialogTurnStatus
|
9 |
+
from dialog_helper import DialogHelper
|
10 |
+
import aiohttp
|
11 |
+
import speech_recognition as sr
|
12 |
+
from PIL import Image
|
13 |
+
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
|
14 |
+
|
15 |
+
# Ensure nltk is installed and download required data
|
16 |
+
try:
|
17 |
+
import nltk
|
18 |
+
from nltk.tokenize import word_tokenize
|
19 |
+
nltk.download('punkt', quiet=True)
|
20 |
+
except ImportError:
|
21 |
+
import subprocess
|
22 |
+
import sys
|
23 |
+
subprocess.check_call([sys.executable, "-m", "pip", "install", "nltk"])
|
24 |
+
import nltk
|
25 |
+
from nltk.tokenize import word_tokenize
|
26 |
+
nltk.download('punkt', quiet=True)
|
27 |
+
|
28 |
+
# Import perspectives
|
29 |
+
from perspectives import (
|
30 |
+
Perspective, NewtonPerspective, DaVinciPerspective, HumanIntuitionPerspective,
|
31 |
+
NeuralNetworkPerspective, QuantumComputingPerspective, ResilientKindnessPerspective,
|
32 |
+
MathematicalPerspective, PhilosophicalPerspective, CopilotPerspective, BiasMitigationPerspective,
|
33 |
+
PsychologicalPerspective
|
34 |
+
)
|
35 |
+
|
36 |
+
# Load environment variables
|
37 |
+
from dotenv import load_dotenv
|
38 |
+
load_dotenv()
|
39 |
+
|
40 |
+
# Setup Logging
|
41 |
+
def setup_logging(config):
|
42 |
+
if config.get('logging_enabled', True):
|
43 |
+
log_level = config.get('log_level', 'DEBUG').upper()
|
44 |
+
numeric_level = getattr(logging, log_level, logging.DEBUG)
|
45 |
+
logging.basicConfig(
|
46 |
+
filename='universal_reasoning.log',
|
47 |
+
level=numeric_level,
|
48 |
+
format='%(asctime)s - %(levelname)s - %(message)s'
|
49 |
+
)
|
50 |
+
else:
|
51 |
+
logging.disable(logging.CRITICAL)
|
52 |
+
|
53 |
+
# Load JSON configuration
|
54 |
+
def load_json_config(file_path):
|
55 |
+
if not os.path.exists(file_path):
|
56 |
+
logging.error(f"Configuration file '{file_path}' not found.")
|
57 |
+
return {}
|
58 |
+
try:
|
59 |
+
with open(file_path, 'r') as file:
|
60 |
+
config = json.load(file)
|
61 |
+
logging.info(f"Configuration loaded from '{file_path}'.")
|
62 |
+
return config
|
63 |
+
except json.JSONDecodeError as e:
|
64 |
+
logging.error(f"Error decoding JSON from the configuration file '{file_path}': {e}")
|
65 |
+
return {}
|
66 |
+
|
67 |
+
# Encrypt sensitive information
|
68 |
+
def encrypt_sensitive_data(data, key):
|
69 |
+
fernet = Fernet(key)
|
70 |
+
encrypted_data = fernet.encrypt(data.encode())
|
71 |
+
return encrypted_data
|
72 |
+
|
73 |
+
# Decrypt sensitive information
|
74 |
+
def decrypt_sensitive_data(encrypted_data, key):
|
75 |
+
fernet = Fernet(key)
|
76 |
+
decrypted_data = fernet.decrypt(encrypted_data).decode()
|
77 |
+
return decrypted_data
|
78 |
+
|
79 |
+
# Securely destroy sensitive information
|
80 |
+
def destroy_sensitive_data(data):
|
81 |
+
del data
|
82 |
+
|
83 |
+
# Define the Element class
|
84 |
+
class Element:
|
85 |
+
def __init__(self, name, symbol, representation, properties, interactions, defense_ability):
|
86 |
+
self.name = name
|
87 |
+
self.symbol = symbol
|
88 |
+
self.representation = representation
|
89 |
+
self.properties = properties
|
90 |
+
self.interactions = interactions
|
91 |
+
self.defense_ability = defense_ability
|
92 |
+
|
93 |
+
def execute_defense_function(self):
|
94 |
+
message = f"{self.name} ({self.symbol}) executes its defense ability: {self.defense_ability}"
|
95 |
+
logging.info(message)
|
96 |
+
return message
|
97 |
+
|
98 |
+
# Define the CustomRecognizer class
|
99 |
+
class CustomRecognizer:
|
100 |
+
def recognize(self, question):
|
101 |
+
# Simple keyword-based recognizer for demonstration purposes
|
102 |
+
if any(element_name.lower() in question.lower() for element_name in ["hydrogen", "diamond"]):
|
103 |
+
return RecognizerResult(question)
|
104 |
+
return RecognizerResult(None)
|
105 |
+
|
106 |
+
def get_top_intent(self, recognizer_result):
|
107 |
+
if recognizer_result.text:
|
108 |
+
return "ElementDefense"
|
109 |
+
else:
|
110 |
+
return "None"
|
111 |
+
|
112 |
+
class RecognizerResult:
|
113 |
+
def __init__(self, text):
|
114 |
+
self.text = text
|
115 |
+
|
116 |
+
# Universal Reasoning Aggregator
|
117 |
+
class UniversalReasoning:
|
118 |
+
def __init__(self, config):
|
119 |
+
self.config = config
|
120 |
+
self.perspectives = self.initialize_perspectives()
|
121 |
+
self.elements = self.initialize_elements()
|
122 |
+
self.recognizer = CustomRecognizer()
|
123 |
+
self.context_history = [] # Maintain context history
|
124 |
+
self.feedback = [] # Store user feedback
|
125 |
+
# Initialize the sentiment analyzer
|
126 |
+
self.sentiment_analyzer = SentimentIntensityAnalyzer()
|
127 |
+
|
128 |
+
def initialize_perspectives(self):
|
129 |
+
perspective_names = self.config.get('enabled_perspectives', [
|
130 |
+
"newton",
|
131 |
+
"davinci",
|
132 |
+
"human_intuition",
|
133 |
+
"neural_network",
|
134 |
+
"quantum_computing",
|
135 |
+
"resilient_kindness",
|
136 |
+
"mathematical",
|
137 |
+
"philosophical",
|
138 |
+
"copilot",
|
139 |
+
"bias_mitigation",
|
140 |
+
"psychological"
|
141 |
+
])
|
142 |
+
perspective_classes = {
|
143 |
+
"newton": NewtonPerspective,
|
144 |
+
"davinci": DaVinciPerspective,
|
145 |
+
"human_intuition": HumanIntuitionPerspective,
|
146 |
+
"neural_network": NeuralNetworkPerspective,
|
147 |
+
"quantum_computing": QuantumComputingPerspective,
|
148 |
+
"resilient_kindness": ResilientKindnessPerspective,
|
149 |
+
"mathematical": MathematicalPerspective,
|
150 |
+
"philosophical": PhilosophicalPerspective,
|
151 |
+
"copilot": CopilotPerspective,
|
152 |
+
"bias_mitigation": BiasMitigationPerspective,
|
153 |
+
"psychological": PsychologicalPerspective
|
154 |
+
}
|
155 |
+
perspectives = []
|
156 |
+
for name in perspective_names:
|
157 |
+
cls = perspective_classes.get(name.lower())
|
158 |
+
if cls:
|
159 |
+
perspectives.append(cls(self.config))
|
160 |
+
logging.debug(f"Perspective '{name}' initialized.")
|
161 |
+
else:
|
162 |
+
logging.warning(f"Perspective '{name}' is not recognized and will be skipped.")
|
163 |
+
return perspectives
|
164 |
+
|
165 |
+
def initialize_elements(self):
|
166 |
+
elements = [
|
167 |
+
Element(
|
168 |
+
name="Hydrogen",
|
169 |
+
symbol="H",
|
170 |
+
representation="Lua",
|
171 |
+
properties=["Simple", "Lightweight", "Versatile"],
|
172 |
+
interactions=["Easily integrates with other languages and systems"],
|
173 |
+
defense_ability="Evasion"
|
174 |
+
),
|
175 |
+
# You can add more elements as needed
|
176 |
+
Element(
|
177 |
+
name="Diamond",
|
178 |
+
symbol="D",
|
179 |
+
representation="Kotlin",
|
180 |
+
properties=["Modern", "Concise", "Safe"],
|
181 |
+
interactions=["Used for Android development"],
|
182 |
+
defense_ability="Adaptability"
|
183 |
+
)
|
184 |
+
]
|
185 |
+
return elements
|
186 |
+
|
187 |
+
async def generate_response(self, question):
|
188 |
+
self.context_history.append(question) # Add question to context history
|
189 |
+
sentiment_score = self.analyze_sentiment(question)
|
190 |
+
real_time_data = await self.fetch_real_time_data("https://api.example.com/data")
|
191 |
+
responses = []
|
192 |
+
tasks = []
|
193 |
+
|
194 |
+
# Generate responses from perspectives concurrently
|
195 |
+
for perspective in self.perspectives:
|
196 |
+
if asyncio.iscoroutinefunction(perspective.generate_response):
|
197 |
+
tasks.append(perspective.generate_response(question))
|
198 |
+
else:
|
199 |
+
# Wrap synchronous functions in coroutine
|
200 |
+
async def sync_wrapper(perspective, question):
|
201 |
+
return perspective.generate_response(question)
|
202 |
+
tasks.append(sync_wrapper(perspective, question))
|
203 |
+
|
204 |
+
perspective_results = await asyncio.gather(*tasks, return_exceptions=True)
|
205 |
+
|
206 |
+
for perspective, result in zip(self.perspectives, perspective_results):
|
207 |
+
if isinstance(result, Exception):
|
208 |
+
logging.error(f"Error generating response from {perspective.__class__.__name__}: {result}")
|
209 |
+
else:
|
210 |
+
responses.append(result)
|
211 |
+
logging.debug(f"Response from {perspective.__class__.__name__}: {result}")
|
212 |
+
|
213 |
+
# Handle element defense logic
|
214 |
+
recognizer_result = self.recognizer.recognize(question)
|
215 |
+
top_intent = self.recognizer.get_top_intent(recognizer_result)
|
216 |
+
if top_intent == "ElementDefense":
|
217 |
+
element_name = recognizer_result.text.strip()
|
218 |
+
element = next(
|
219 |
+
(el for el in self.elements if el.name.lower() in element_name.lower()),
|
220 |
+
None
|
221 |
+
)
|
222 |
+
if element:
|
223 |
+
defense_message = element.execute_defense_function()
|
224 |
+
responses.append(defense_message)
|
225 |
+
else:
|
226 |
+
logging.info(f"No matching element found for '{element_name}'")
|
227 |
+
|
228 |
+
ethical_considerations = self.config.get(
|
229 |
+
'ethical_considerations',
|
230 |
+
"Always act with transparency, fairness, and respect for privacy."
|
231 |
+
)
|
232 |
+
responses.append(f"**Ethical Considerations:**\n{ethical_considerations}")
|
233 |
+
|
234 |
+
formatted_response = "\n\n".join(responses)
|
235 |
+
return formatted_response
|
236 |
+
|
237 |
+
def analyze_sentiment(self, text):
|
238 |
+
sentiment_score = self.sentiment_analyzer.polarity_scores(text)
|
239 |
+
logging.info(f"Sentiment analysis result: {sentiment_score}")
|
240 |
+
return sentiment_score
|
241 |
+
|
242 |
+
async def fetch_real_time_data(self, source_url):
|
243 |
+
async with aiohttp.ClientSession() as session:
|
244 |
+
async with session.get(source_url) as response:
|
245 |
+
data = await response.json()
|
246 |
+
logging.info(f"Real-time data fetched from {source_url}: {data}")
|
247 |
+
return data
|
248 |
+
|
249 |
+
async def run_dialog(self, dialog: Dialog, turn_context: TurnContext, accessor: StatePropertyAccessor) -> None:
|
250 |
+
await DialogHelper.run_dialog(dialog, turn_context, accessor)
|
251 |
+
|
252 |
+
def save_response(self, response):
|
253 |
+
if self.config.get('enable_response_saving', False):
|
254 |
+
save_path = self.config.get('response_save_path', 'responses.txt')
|
255 |
+
try:
|
256 |
+
with open(save_path, 'a', encoding='utf-8') as file:
|
257 |
+
file.write(response + '\n')
|
258 |
+
logging.info(f"Response saved to '{save_path}'.")
|
259 |
+
except Exception as e:
|
260 |
+
logging.error(f"Error saving response to '{save_path}': {e}")
|
261 |
+
|
262 |
+
def backup_response(self, response):
|
263 |
+
if self.config.get('backup_responses', {}).get('enabled', False):
|
264 |
+
backup_path = self.config['backup_responses'].get('backup_path', 'backup_responses.txt')
|
265 |
+
try:
|
266 |
+
with open(backup_path, 'a', encoding='utf-8') as file:
|
267 |
+
file.write(response + '\n')
|
268 |
+
logging.info(f"Response backed up to '{backup_path}'.")
|
269 |
+
|
270 |
+
async def collect_user_feedback(self, turn_context: TurnContext):
|
271 |
+
# Collect feedback from the user
|
272 |
+
feedback = turn_context.activity.text
|
273 |
+
logging.info(f"User feedback received: {feedback}")
|
274 |
+
# Process feedback for continuous learning
|
275 |
+
self.process_feedback(feedback)
|
276 |
+
|
277 |
+
def process_feedback(self, feedback):
|
278 |
+
# Implement feedback processing logic
|
279 |
+
logging.info(f"Processing feedback: {feedback}")
|
280 |
+
# Example: Adjust response generation based on feedback
|
281 |
+
# This can be expanded with more sophisticated learning algorithms
|
282 |
+
|
283 |
+
def add_new_perspective(self, perspective_name, perspective_class):
|
284 |
+
if perspective_name.lower() not in [p.__class__.__name__.lower() for p in self.perspectives]:
|
285 |
+
self.perspectives.append(perspective_class(self.config))
|
286 |
+
logging.info(f"New perspective '{perspective_name}' added.")
|
287 |
+
else:
|
288 |
+
logging.warning(f"Perspective '{perspective_name}' already exists.")
|
289 |
+
|
290 |
+
def handle_voice_input(self):
|
291 |
+
recognizer = sr.Recognizer()
|
292 |
+
with sr.Microphone() as source:
|
293 |
+
print("Listening...")
|
294 |
+
audio = recognizer.listen(source)
|
295 |
+
try:
|
296 |
+
text = recognizer.recognize_google(audio)
|
297 |
+
print(f"Voice input recognized: {text}")
|
298 |
+
return text
|
299 |
+
except sr.UnknownValueError:
|
300 |
+
print("Google Speech Recognition could not understand audio")
|
301 |
+
return None
|
302 |
+
except sr.RequestError as e:
|
303 |
+
print(f"Could not request results from Google Speech Recognition service; {e}")
|
304 |
+
return None
|
305 |
+
|
306 |
+
def handle_image_input(self, image_path):
|
307 |
+
try:
|
308 |
+
image = Image.open(image_path)
|
309 |
+
print(f"Image input processed: {image_path}")
|
310 |
+
return image
|
311 |
+
except Exception as e:
|
312 |
+
print(f"Error processing image input: {e}")
|
313 |
+
return None
|
314 |
+
|
315 |
+
# Example usage
|
316 |
+
if __name__ == "__main__":
|
317 |
+
config = load_json_config('config.json')
|
318 |
+
# Add Azure OpenAI configurations to the config
|
319 |
+
azure_openai_api_key = os.getenv('AZURE_OPENAI_API_KEY')
|
320 |
+
azure_openai_endpoint = os.getenv('AZURE_OPENAI_ENDPOINT')
|
321 |
+
|
322 |
+
# Encrypt sensitive data
|
323 |
+
encryption_key = Fernet.generate_key()
|
324 |
+
encrypted_api_key = encrypt_sensitive_data(azure_openai_api_key, encryption_key)
|
325 |
+
encrypted_endpoint = encrypt_sensitive_data(azure_openai_endpoint, encryption_key)
|
326 |
+
|
327 |
+
# Add encrypted data to config
|
328 |
+
config['azure_openai_api_key'] = encrypted_api_key
|
329 |
+
config['azure_openai_endpoint'] = encrypted_endpoint
|
330 |
+
|
331 |
+
setup_logging(config)
|
332 |
+
universal_reasoning = UniversalReasoning(config)
|
333 |
+
question = "Tell me about Hydrogen and its defense mechanisms."
|
334 |
+
response = asyncio.run(universal_reasoning.generate_response(question))
|
335 |
+
print(response)
|
336 |
+
if response:
|
337 |
+
universal_reasoning.save_response(response)
|
338 |
+
universal_reasoning.backup_response(response)
|
339 |
+
|
340 |
+
# Decrypt and destroy sensitive data
|
341 |
+
decrypted_api_key = decrypt_sensitive_data(encrypted_api_key, encryption_key)
|
342 |
+
decrypted_endpoint = decrypt_sensitive_data(encrypted_endpoint, encryption_key)
|
343 |
+
destroy_sensitive_data(decrypted_api_key)
|
344 |
+
destroy_sensitive_data(decrypted_endpoint)
|
345 |
+
|
346 |
+
# Handle voice input
|
347 |
+
voice_input = universal_reasoning.handle_voice_input()
|
348 |
+
if voice_input:
|
349 |
+
response = asyncio.run(universal_reasoning.generate_response(voice_input))
|
350 |
+
print(response)
|
351 |
+
|
352 |
+
# Handle image input
|
353 |
+
image_input = universal_reasoning.handle_image_input("path_to_image.jpg")
|
354 |
+
if image_input:
|
355 |
+
# Process image input (additional logic can be added here)
|
356 |
+
print("Image input handled.")
|
utils.py
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import tkinter as tk
|
2 |
+
import urllib.request
|
3 |
+
import logging
|
4 |
+
|
5 |
+
def show_privacy_consent() -> bool:
|
6 |
+
"""Display a pop-up window to obtain user consent for data collection and privacy."""
|
7 |
+
def on_accept():
|
8 |
+
user_consent.set(True)
|
9 |
+
root.destroy()
|
10 |
+
def on_decline():
|
11 |
+
user_consent.set(False)
|
12 |
+
root.destroy()
|
13 |
+
root = tk.Tk()
|
14 |
+
root.title("Data Permission and Privacy")
|
15 |
+
message = ("We value your privacy. By using this application, you consent to the collection and use of your data "
|
16 |
+
"as described in our privacy policy. Do you agree to proceed?")
|
17 |
+
label = tk.Label(root, text=message, wraplength=400, justify="left")
|
18 |
+
label.pack(padx=20, pady=20)
|
19 |
+
button_frame = tk.Frame(root)
|
20 |
+
button_frame.pack(pady=10)
|
21 |
+
accept_button = tk.Button(button_frame, text="Accept", command=on_accept)
|
22 |
+
accept_button.pack(side="left", padx=10)
|
23 |
+
decline_button = tk.Button(button_frame, text="Decline", command=on_decline)
|
24 |
+
decline_button.pack(side="right", padx=10)
|
25 |
+
user_consent = tk.BooleanVar()
|
26 |
+
root.mainloop()
|
27 |
+
return user_consent.get()
|
28 |
+
|
29 |
+
def download_database(url: str, file_path: str) -> None:
|
30 |
+
"""Download the database file from the given URL."""
|
31 |
+
try:
|
32 |
+
logging.info(f"Downloading database from {url}...")
|
33 |
+
urllib.request.urlretrieve(url, file_path)
|
34 |
+
logging.info("Download complete.")
|
35 |
+
except urllib.error.URLError as e:
|
36 |
+
logging.error(f"Error: Failed to download database. {e}")
|
37 |
+
except Exception as e:
|
38 |
+
logging.error(f"An unexpected error occurred: {e}")
|
your_script.py
ADDED
@@ -0,0 +1,244 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import re
|
2 |
+
import json
|
3 |
+
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
|
4 |
+
from cryptography.hazmat.primitives import padding
|
5 |
+
from cryptography.hazmat.backends import default_backend
|
6 |
+
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
|
7 |
+
|
8 |
+
class Element:
|
9 |
+
def __init__(self, name, symbol, representation, properties, interactions, defense_ability):
|
10 |
+
self.name = name
|
11 |
+
self.symbol = symbol
|
12 |
+
self.representation = representation
|
13 |
+
self.properties = properties
|
14 |
+
self.interactions = interactions
|
15 |
+
self.defense_ability = defense_ability
|
16 |
+
|
17 |
+
def display_properties(self):
|
18 |
+
print(f"Properties of {self.name} ({self.symbol}):")
|
19 |
+
for prop in self.properties:
|
20 |
+
print(f" - {prop}")
|
21 |
+
|
22 |
+
def display_interactions(self):
|
23 |
+
print(f"Interactions of {self.name} ({self.symbol}):")
|
24 |
+
for interaction in self.interactions:
|
25 |
+
print(f" - {interaction}")
|
26 |
+
|
27 |
+
def display_defense_ability(self):
|
28 |
+
print(f"Defense Ability of {self.name} ({self.symbol}): {self.defense_ability}")
|
29 |
+
|
30 |
+
def execute_defense_function(self):
|
31 |
+
defense_functions = {
|
32 |
+
"evasion": self.evasion,
|
33 |
+
"adaptability": self.adaptability,
|
34 |
+
"fortification": self.fortification,
|
35 |
+
"barrier": self.barrier,
|
36 |
+
"regeneration": self.regeneration,
|
37 |
+
"resilience": self.resilience,
|
38 |
+
"illumination": self.illumination,
|
39 |
+
"shield": self.shield,
|
40 |
+
"reflection": self.reflection,
|
41 |
+
"protection": self.protection
|
42 |
+
}
|
43 |
+
defense_function = defense_functions.get(self.defense_ability.lower(), self.no_defense)
|
44 |
+
defense_function()
|
45 |
+
|
46 |
+
def evasion(self):
|
47 |
+
print(f"{self.name} uses Evasion to avoid threats and remain undetected.")
|
48 |
+
|
49 |
+
def adaptability(self):
|
50 |
+
print(f"{self.name} adapts to changing environments and evolves to overcome challenges.")
|
51 |
+
|
52 |
+
def fortification(self):
|
53 |
+
print(f"{self.name} strengthens defenses and fortifies positions to withstand attacks.")
|
54 |
+
|
55 |
+
def barrier(self):
|
56 |
+
print(f"{self.name} creates barriers to protect against external threats.")
|
57 |
+
|
58 |
+
def regeneration(self):
|
59 |
+
print(f"{self.name} regenerates lost or damaged parts to maintain functionality.")
|
60 |
+
|
61 |
+
def resilience(self):
|
62 |
+
print(f"{self.name} exhibits resilience to recover quickly from setbacks.")
|
63 |
+
|
64 |
+
def illumination(self):
|
65 |
+
print(f"{self.name} uses illumination to reveal hidden threats and illuminate dark areas.")
|
66 |
+
|
67 |
+
def shield(self):
|
68 |
+
print(f"{self.name} uses a shield to block incoming attacks and protect allies.")
|
69 |
+
|
70 |
+
def reflection(self):
|
71 |
+
print(f"{self.name} reflects attacks back to the source, turning the enemy's power against them.")
|
72 |
+
|
73 |
+
def protection(self):
|
74 |
+
print(f"{self.name} offers protection to prevent harm and ensure safety.")
|
75 |
+
|
76 |
+
def no_defense(self):
|
77 |
+
print("No defense function available.")
|
78 |
+
|
79 |
+
class CustomRecognizer:
|
80 |
+
class RecognizerResult:
|
81 |
+
def __init__(self, text):
|
82 |
+
self.text = text
|
83 |
+
self.intents = []
|
84 |
+
|
85 |
+
class Intent:
|
86 |
+
def __init__(self, name, score):
|
87 |
+
self.name = name
|
88 |
+
self.score = score
|
89 |
+
|
90 |
+
def recognize(self, text):
|
91 |
+
recognizer_result = self.RecognizerResult(text)
|
92 |
+
regex_element = re.compile(r"^(Hydrogen|Carbon|Iron|Silicon|Oxygen|Nitrogen|Phosphorus|Gold|Silver|Lead|Diamond)$", re.IGNORECASE)
|
93 |
+
is_element = regex_element.match(text)
|
94 |
+
|
95 |
+
if is_element:
|
96 |
+
recognizer_result.intents.append(self.Intent("ElementDefense", 100))
|
97 |
+
return recognizer_result
|
98 |
+
|
99 |
+
def get_top_intent(self, recognizer_result):
|
100 |
+
recognizer_result.intents.sort(key=lambda x: x.score, reverse=True)
|
101 |
+
return recognizer_result.intents[0].name if recognizer_result.intents else None
|
102 |
+
|
103 |
+
class DataProtector:
|
104 |
+
sensitive_keywords = {"AI", "sensitive", "confidential", "data"}
|
105 |
+
|
106 |
+
@staticmethod
|
107 |
+
def contains_sensitive_info(text):
|
108 |
+
return any(keyword.lower() in text.lower() for keyword in DataProtector.sensitive_keywords)
|
109 |
+
|
110 |
+
@staticmethod
|
111 |
+
def mask_sensitive_info(text):
|
112 |
+
for keyword in DataProtector.sensitive_keywords:
|
113 |
+
text = re.sub(keyword, '*' * len(keyword), text, flags=re.IGNORECASE)
|
114 |
+
return text
|
115 |
+
|
116 |
+
@staticmethod
|
117 |
+
def encrypt_string(plain_text, key):
|
118 |
+
backend = default_backend()
|
119 |
+
key_bytes = key.encode('utf-8')
|
120 |
+
iv = key_bytes[:16]
|
121 |
+
|
122 |
+
cipher = Cipher(algorithms.AES(key_bytes), modes.CBC(iv), backend=backend)
|
123 |
+
encryptor = cipher.encryptor()
|
124 |
+
|
125 |
+
padder = padding.PKCS7(algorithms.AES.block_size).padder()
|
126 |
+
padded_data = padder.update(plain_text.encode('utf-8')) + padder.finalize()
|
127 |
+
|
128 |
+
encrypted_data = encryptor.update(padded_data) + encryptor.finalize()
|
129 |
+
return encrypted_data.hex()
|
130 |
+
|
131 |
+
@staticmethod
|
132 |
+
def decrypt_string(cipher_text, key):
|
133 |
+
backend = default_backend()
|
134 |
+
key_bytes = key.encode('utf-8')
|
135 |
+
iv = key_bytes[:16]
|
136 |
+
|
137 |
+
cipher = Cipher(algorithms.AES(key_bytes), modes.CBC(iv), backend=backend)
|
138 |
+
decryptor = cipher.decryptor()
|
139 |
+
|
140 |
+
encrypted_data = bytes.fromhex(cipher_text)
|
141 |
+
decrypted_padded_data = decryptor.update(encrypted_data) + decryptor.finalize()
|
142 |
+
|
143 |
+
unpadder = padding.PKCS7(algorithms.AES.block_size).unpadder()
|
144 |
+
decrypted_data = unpadder.update(decrypted_padded_data) + unpadder.finalize()
|
145 |
+
|
146 |
+
return decrypted_data.decode('utf-8')
|
147 |
+
|
148 |
+
def analyze_sentiment(text):
|
149 |
+
analyzer = SentimentIntensityAnalyzer()
|
150 |
+
sentiment = analyzer.polarity_scores(text)
|
151 |
+
return sentiment
|
152 |
+
|
153 |
+
def initialize_elements():
|
154 |
+
elements = [
|
155 |
+
Element(
|
156 |
+
name="Hydrogen",
|
157 |
+
symbol="H",
|
158 |
+
representation="Lua",
|
159 |
+
properties=["Simple", "Lightweight", "Versatile"],
|
160 |
+
interactions=["Easily integrates with other languages and systems"],
|
161 |
+
defense_ability="Evasion"
|
162 |
+
),
|
163 |
+
Element(
|
164 |
+
name="Carbon",
|
165 |
+
symbol="C",
|
166 |
+
representation="Python",
|
167 |
+
properties=["Flexible", "Widely used", "Powerful"],
|
168 |
+
interactions=["Can be used for a variety of tasks, from web development to data analysis"],
|
169 |
+
defense_ability="Adaptability"
|
170 |
+
),
|
171 |
+
Element(
|
172 |
+
name="Iron",
|
173 |
+
symbol="Fe",
|
174 |
+
representation="C++",
|
175 |
+
properties=["Strong", "Durable", "Efficient"],
|
176 |
+
interactions=["Used in system programming and game development"],
|
177 |
+
defense_ability="Fortification"
|
178 |
+
),
|
179 |
+
Element(
|
180 |
+
name="Silicon",
|
181 |
+
symbol="Si",
|
182 |
+
representation="Java",
|
183 |
+
properties=["Robust", "Platform-independent", "Secure"],
|
184 |
+
interactions=["Widely used in enterprise applications"],
|
185 |
+
defense_ability="Barrier"
|
186 |
+
),
|
187 |
+
Element(
|
188 |
+
name="Oxygen",
|
189 |
+
symbol="O",
|
190 |
+
representation="JavaScript",
|
191 |
+
properties=["Dynamic", "Versatile", "Ubiquitous"],
|
192 |
+
interactions=["Essential for web development"],
|
193 |
+
defense_ability="Regeneration"
|
194 |
+
),
|
195 |
+
Element(
|
196 |
+
name="Nitrogen",
|
197 |
+
symbol="N",
|
198 |
+
representation="Ruby",
|
199 |
+
properties=["Elegant", "Productive", "Flexible"],
|
200 |
+
interactions=["Popular in web development with Rails"],
|
201 |
+
defense_ability="Resilience"
|
202 |
+
),
|
203 |
+
Element(
|
204 |
+
name="Phosphorus",
|
205 |
+
symbol="P",
|
206 |
+
representation="PHP",
|
207 |
+
properties=["Server-side", "Web-focused", "Embedded"],
|
208 |
+
interactions=["Commonly used in web development"],
|
209 |
+
defense_ability="Illumination"
|
210 |
+
),
|
211 |
+
Element(
|
212 |
+
name="Gold",
|
213 |
+
symbol="Au",
|
214 |
+
representation="Swift",
|
215 |
+
properties=["Modern", "Safe", "Fast"],
|
216 |
+
interactions=["Used for iOS and macOS development"],
|
217 |
+
defense_ability="Shield"
|
218 |
+
),
|
219 |
+
Element(
|
220 |
+
name="Silver",
|
221 |
+
symbol="Ag",
|
222 |
+
representation="Go",
|
223 |
+
properties=["Concurrent", "Efficient", "Scalable"],
|
224 |
+
interactions=["Ideal for cloud services and backend systems"],
|
225 |
+
defense_ability="Reflection"
|
226 |
+
),
|
227 |
+
Element(
|
228 |
+
name="Lead",
|
229 |
+
symbol="Pb",
|
230 |
+
representation="Rust",
|
231 |
+
properties=["Safe", "Concurrent", "Fast"],
|
232 |
+
interactions=["Used for system-level programming"],
|
233 |
+
defense_ability="Protection"
|
234 |
+
),
|
235 |
+
Element(
|
236 |
+
name="Diamond",
|
237 |
+
symbol="D",
|
238 |
+
representation="Kotlin",
|
239 |
+
properties=["Modern", "Concise", "Safe"],
|
240 |
+
interactions=["Used for Android development"],
|
241 |
+
defense_ability="Adaptability"
|
242 |
+
)
|
243 |
+
]
|
244 |
+
return elements
|