Code Monkey home page Code Monkey logo

conversationlearner-sdk's Introduction

ConversationLearner-SDK

Conversation Learner Software Development Kit

Travis CircleCI AppVeyor

This repo is intended to be consumed by your bot. The SDK contains 3 major components:

  1. Administration UI - provides graphical interface to manage, train, and test your bot
  2. Express Router - The router is mounted to your server in development and used by the UI (above) during training
  3. Recognizer - Similar to other BotBuilder recognizers like LUIS the CL recognizer processes the given Bot context and returns results such as messages, adaptive cards, and more.

Getting started

Install @conversationlearner/sdk in consuming project:

npm install @conversationlearner/sdk --save-exact

Note: We recommend using --save-exact to lock the version since we are NOT following SemVer at this time. This can help prevent accidental package updates which may contain breaking changes if you are not using package-lock.json. We will move to following SemVer soon as we improve our release process.

Using the recognizer:

import { ConversationLearner, ICLOptions, ClientMemoryManager } from '@conversationlearner/sdk'

...

const sdkRouter = ConversationLearner.Init({
    CONVERSATION_LEARNER_SERVICE_URI: process.env.CONVERSATION_LEARNER_SERVICE_URI
})
if (isDevelopment) {
    server.use('/sdk', sdkRouter)
}

...

const cl = new ConversationLearner(modelId);

server.post('/api/messages', (req, res) => {
    adapter.processActivity(req, res, async context => {
        const result = await cl.recognize(context)
        
        if (result) {
            cl.SendResult(result);
        }
    })
})

Using the UI router.

Previously the UI was served separately and required to be run on a different port than your bot. Now the UI is included with your bot! The ui is availble at the /ui path of your bot url. The leaves the root / available for you to add a Bot landing page. There you can summarize your bot's purpose and capabilities to the user.

...
import { uiRouter } from '@conversationlearner/sdk'

...

"Mount the router at the root `/` as it internally has the /ui paths."
server.use(uiRouter)

... 

server.listen(port)

Contributing

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

Semantic Release

Semantic release works by analyzing all commits that have occurred since the last release, computing the next version to increment based on the most significant commit found, then tagging and publishing a new package with that version.

See: https://semantic-release.gitbooks.io/semantic-release/content/#how-does-it-work

In order to analyze the commit messages reliably they must be in a known format. To help writing these commits there is a tool at npm run commit which acts a wizard walking you through the options.

For most use cases the only change required is to type a special word in front of your normal commit messages. Instead of "add function to compute X" put "feat: add function to compute X". Based on the rules "feat" is mapped to a "minor" release.

Video Demo: https://youtu.be/qf7c-KxBBZc?t=37s

Release Process

See: RELEASE

conversationlearner-sdk's People

Contributors

arincon avatar larsliden avatar mattmazzola avatar msft-paulkim avatar msft-shahins avatar tpmsr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

conversationlearner-sdk's Issues

Translation Middleware not working properly

I was working on a demo bot from one of the samples on ConversationLearner-Samples , and I noticed some strange behaviour.

I added Translation Middleware (like this: v4 JS Translation Docs) and I have had one main problem.
The problem appears when you train ConversationLearner to send to the user many messages in a row (without waiting for the user to reply). In this scenario, the first message is translated back to the user language, but the rest remain in english.
I digged into the code to find the cause, and as I see, the problem is with the context.
The translation middleware is adding a "listener" to the context, which executes every time a message is sent to the user. However, as you can see in CLRunner.ts:650, in all messages excepting the first, what CL SDK is doing is resuming the conversation, and getting a context from the ConversationReference object.
My suspicion is that this context doesn't have, for some reason, any middleware attached.

Any clue on this?

Thank you in advance.

The automated release is failing 🚨

🚨 The automated release from the master branch failed. 🚨

I recommend you give this issue a high priority, so other packages depending on you could benefit from your bug fixes and new features.

You can find below the list of errors reported by semantic-release. Each one of them has to be resolved in order to automatically publish your package. I’m sure you can resolve this 💪.

Errors are usually caused by a misconfiguration or an authentication problem. With each error reported below you will find explanation and guidance to help you to resolve it.

Once all the errors are resolved, semantic-release will release your package the next time you push a commit to the master branch. You can also manually restart the failed CI job that runs semantic-release.

If you are not sure how to resolve this, here is some links that can help you:

If those don’t help, or if this issue is reporting something you think isn’t right, you can always ask the humans behind semantic-release.


Invalid npm token.

The npm token configured in the NPM_TOKEN environment variable must be a valid token allowing to publish to the registry https://registry.npmjs.org/.

If you are using Two-Factor Authentication, make configure the auth-only level is supported. semantic-release cannot publish with the default auth-and-writes level.

Please make sure to set the NPM_TOKEN environment variable in your CI with the exact value of the npm token.


Good luck with your project ✨

Your semantic-release bot 📦🚀

Error scoring an action with a label greater than 30

We are working with an label entity with a GUID format that have more than 30 characters and when we scrore the action, we found the following error:

error max chars entity

Can this error a bug or a limitation of the Train Dialog?

Plan to update service, trainer, predictor to use LUIS keys from request

This requires changes across service, trainer, and predictor which I'm less familiar with and wanted to get agreement on solution before going ahead with work.

Current Implementation:

Currently the serive stores the user's LUIS authoring key as part of application data and makes requests to LUIS on behalf of the user

Future Implementation:

client (SDK) will provide LUIS keys as part of request

Reasons for change:

  • Storing the LUIS keys is a security risk. The keys are global for all apps in the users account, not just the ones created by BLIS so if mis-used it could delete other things not owned by BLIS
  • It makes rotating keys harder as it adds manual step to udpate all BLIS apps that were using the key and it's also requires knowing which apps use that key which is also difficult.
  • We plan to support using the LUIS subscription key for /session routes since this could be different per deployed bot to increase separate quotas and this means it would need to be specified with the deployed and thus we would need to support taking keys from the incoming request anyways.

Overall: Single place to manage keys in environment variables, simplifies key roll-over, reduced security risk.

Requirements:

  • Key may be provided as query parameter or header
    • Query parameter luisAuthoringKey or x-luis-authoring-key
  • Service will reject requests which require use of key but do not provide one

Note about query param vs header. Query params are generally easier to experiment with since they can be simply put in URL although for all the requests we need a key it requires a body anyways so this is irrelevant. Also, query params are usually implied to be optional where as headers are not. To summarize, I think the most technically correct solution is header although I imagine consumers will want query param since that's an option LUIS also offers.

Changes:

  • Update SDK to send keys to service
  • Add ActionFilter or utility function to get key from query or header
    • If both query param and header are provided, use query param value
    • Hope that using ActionFilter can put key on well known property in HttpContext and avoid directly calling `HttpContext.Request.Query['luisAuthoringKey'] || HttpContext.Request.Headers['x-luis-authoring-key'] in variaous places. It also decouples the use of key from the value of the key. (This could also be done by simple utility function that throws exception or returns keys but)

These are the changes I'm less sure of and want verification / feedback on:

  • Update Predictor to use key from request
  • Update Trainer to use key from request

Below we will walk through request flow to understand necessary changes:

Request Flow

SDK -> Service

GET /apps/{appId}/teach/{teachId}/extractor?luisAuthoringKey=abc123

OR

GET /apps/{appId}/teach/{teachId}/extractor
x-luis-authoring-key: abc123

Service -> Predictor

Current Implementation:

Service sends LUIS key from application as part of request body

var (sessionInfo, trainDialog) = await GetTeachSessionInfoAndDialog(appId, teachId);
var trainerResponse = await GetExtractionResultAsync(appId, userInput.Text, sessionInfo, trainDialog);

Simulated request?

POST /api/v1/extract

{
    "text": "abc123",
    "model": {
        "extractorModel": { ... },
        "scorerModel": { ... },
        "sourceVersion": "?"
    }
}

Predictor Processes request:

luis_key = request_json['model']['extractorModel']['luisKey']
...
luis_prediction = luis_app.predict(request_json['text'])

https://dialearn.visualstudio.com/BLIS/_git/trainer?path=%2Fservice%2Fpredictor_endpoint.py&version=GBdevelop&line=110&lineStyle=plain&lineEnd=111&lineStartColumn=1&lineEndColumn=1

Updated Service -> Predictor
3 phases:

  1. Add new field luisKey to body
  2. Update predictor to use new field
  3. Update app schema and remove existing luis keys from all existing applications source

This allows non-breaking change for step 1 to be committed through to PROD before predictor is updated. Predictor can still use existing key from app model. Once all predictor code is updatd and we are sure it's safe to do so, we will update app schema to remove the luis key field.

Updated request:

POST /api/v1/extract

{
    "text": "abc123",
    "luisKey:": "def456",
    "model": {
        "extractorModel": { ... },
        "scorerModel": { ... },
        "sourceVersion": "?"
    }
}
luis_key = request_json['luisKey']

Note: The field is a generic luisKey becuase the authoring OR subscription key can be used here.

Service -> Trainer

Current Implementation:

The service does not send request to trainer directly. Service puts messages on the queue and the trainer processes them in oder.

Walk through example scenario that would trigger training such as adding an action:

POST /apps/{appId}/actions
x-luis-authoring-key: abc123

{...}
return await _packageTransformer.TransformPackageAndUpdate(appId, packageTransformer, onAdded);
return await EnqueueAsync(appId, fromScratch);
var msg = new CloudQueueMessage(new(string, object)[]
{
    (@"appId", appId),
    (@"fromScratch", fromScratch)
}
.ToJsonObject().ToString());

Trainer: Get appId from message

item = message.content.decode('UTF-8').replace("\r\n", "")
item_json = json.loads(item)
app_id = item_json['appId']

https://dialearn.visualstudio.com/BLIS/_git/trainer?path=%2Fservice%2Fwork_poller.py&version=GBdevelop&line=76&lineStyle=plain&lineEnd=78&lineStartColumn=17&lineEndColumn=44

Trainer -> Service
/api/v1/app/{}/pendingPackage

Then gets luisKey from packageSource

luis_key = package['luisKey']

https://dialearn.visualstudio.com/BLIS/_git/trainer?path=%2Fservice%2Fwork_poller.py&version=GBdevelop&line=113&lineStyle=plain&lineEnd=114&lineStartColumn=1&lineEndColumn=1

Changes

Similar to the change to predictor. We will add new field on the queue message luisAuthoringKey which will be used for processing the changes to the package.

Note: In this case the name is specific because training does require authoring key.

3 phases:

  1. Add new field luisKey to queue message
  2. Update trainer to use new field
  3. Update app schema and remove existing luis keys from all existing applications source

There are some unique alternatives for this one.
Given that the package transformer callbacks have the entire package avaiable, they can use the key from existing app model now while service is updated to provide one during request.

** Updated Message **

var msg = new CloudQueueMessage(new(string, object)[]
{
    (@"appId", appId),
    (@"luisAuthoringKey", luisAuthoringKey),
    (@"fromScratch", fromScratch)
}
.ToJsonObject().ToString());
luis_key = item_json['luisKey']

Questions:

1. What are the opinions on using separate params / headers for authoring vs subscription key?

This keeps the SDK relatively simple. If it has a key it will provide it. However, server now has to know which place to look based on operation.
This also opens up scenario of using both keys if perhap we wanted to add an entity to app, and also immediately get utterance predictions using subscription key, although I'm not sure if this is valid scenario. (It woudld be simpler to just use authoring key for both requests)

An alternative is that the complexity of choosing the key could be moved to SDK and only send single param / header x-luis-key or luisKey
For /session routes it will use subscription key and fallback to authoring key. For all other routes it will always use authoring key.

In this case the service doesn't need to and will not know if the key is an authoring key or subscription key.

2. What are solutions to fail fast given an invalid key?

If the value for luis key the server has is invalid for whatever reason (key has beend rolled over, developer put typo, etc) it would be nice to fail early rather than waitin for trainer queue message etc. Could we perhaps quickly make a request to APIM for some /ping like route to validate the key instead of delaying? It might not be worth it, but if our trainer has automatic retry and it would need to know not to retry due to invalid key exceptions.

3. Do you agree with changes for trainer and predictor?

Is there a better alternative other than one proposed?

BotState parity with botframework

Question

What is the long term intention of state management for CL? It appears that today it has its own BotState class, that through CLMemory still targets some of of the BotFramework for storage.

Is this a case of CL being out of sync with the latest bot framework where stateAccessors and DI were added to state management in version 4? Or is the intent that CL will always require its own state management, storage etc and not use the bot framework state?

Action required: Greenkeeper could not be activated 🚨

🚨 You need to enable Continuous Integration on all branches of this repository. 🚨

To enable Greenkeeper, you need to make sure that a commit status is reported on all branches. This is required by Greenkeeper because it uses your CI build statuses to figure out when to notify you about breaking changes.

Since we didn’t receive a CI status on the greenkeeper/initial branch, it’s possible that you don’t have CI set up yet. We recommend using Travis CI, but Greenkeeper will work with every other CI service as well.

If you have already set up a CI for this repository, you might need to check how it’s configured. Make sure it is set to run on all new branches. If you don’t want it to run on absolutely every branch, you can whitelist branches starting with greenkeeper/.

Once you have installed and configured CI on this repository correctly, you’ll need to re-trigger Greenkeeper’s initial pull request. To do this, please delete the greenkeeper/initial branch in this repository, and then remove and re-add this repository to the Greenkeeper App’s white list on Github. You'll find this list on your repo or organization’s settings page, under Installed GitHub Apps.

API results not shown in training (Missing ConversationReference)

@conversationlearner/sdk version: 0.275.7

When scoring API actions in training, the result of the action won't be sent back to the training dialog, as there's no conversation reference found. Furthermore, this.adapter appears to be null, thus no message can be sent back to the training dialog:

https://github.com/Microsoft/ConversationLearner-SDK/blob/e946d27171a69964dc0bd2b29e21106d7d23ca70/src/CLRunner.ts#L834-L845

As both checks will fail, the API actions won't be called after being scored.

Steps to reproduce

  • add API actions
  • start training
  • score an API action
  • the action's result won't be shown in the training dialog

Workaround / Hack

It appears, undoing a new, temporary action (e.g. entering foo and undoing it) will invoke the actions and make the UI render the whole history. This seems to be due to conversation learner re-executing the whole history.

This execution might also raise some more issues when interacting with realtime APIs, whose data might change while undoing an action, as the results, the conversation learner relies on, may change.

Cannot update model: payload too large

I updated my CL recently, and I was asked to update the model. When I did, I got an error that the payload is too large. This is the same model I had shared with the team a bit ago. Thanks!

⚠ Local package upgraded to enable viewing.
⚪ Requested package id is the same the latest package id. This package is a candidate for saving.
⚠ Requested package id is also the live package id. Cannot safely auto upgrade. User must confirm in UI to save.
PayloadTooLargeError: request entity too large
    at readStream (C:\dev\learner\learner-bot-samples\node_modules\raw-body\index.js:155:17)
    at getRawBody (C:\dev\learner\learner-bot-samples\node_modules\raw-body\index.js:108:12)
    at read (C:\dev\learner\learner-bot-samples\node_modules\body-parser\lib\read.js:77:3)
    at jsonParser (C:\dev\learner\learner-bot-samples\node_modules\body-parser\lib\types\json.js:134:5)
    at Layer.handle [as handle_request] (C:\dev\learner\learner-bot-samples\node_modules\express\lib\router\layer.js:95:5)
    at trim_prefix (C:\dev\learner\learner-bot-samples\node_modules\express\lib\router\index.js:317:13)
    at C:\dev\learner\learner-bot-samples\node_modules\express\lib\router\index.js:284:7
    at Function.process_params (C:\dev\learner\learner-bot-samples\node_modules\express\lib\router\index.js:335:12)
    at next (C:\dev\learner\learner-bot-samples\node_modules\express\lib\router\index.js:275:10)
    at Function.handle (C:\dev\learner\learner-bot-samples\node_modules\express\lib\router\index.js:174:3)

Built-in entity multi value

I have a flow in which I collect a few different entity values, some of which are built-in numbers. When I make an API call passing the values, the multi-value number entities are passed as a string "{number} and {number}". I would imagine I could get them as an array or something, but calls to the memoryManager.EntityValueAsList or memoryManager.EntityValueAsPrebuilt both return empty arrays. What is the right away to resolve multi-value entities in an API call action?

The automated release is failing 🚨

🚨 The automated release from the master branch failed. 🚨

I recommend you give this issue a high priority, so other packages depending on you could benefit from your bug fixes and new features.

You can find below the list of errors reported by semantic-release. Each one of them has to be resolved in order to automatically publish your package. I’m sure you can resolve this 💪.

Errors are usually caused by a misconfiguration or an authentication problem. With each error reported below you will find explanation and guidance to help you to resolve it.

Once all the errors are resolved, semantic-release will release your package the next time you push a commit to the master branch. You can also manually restart the failed CI job that runs semantic-release.

If you are not sure how to resolve this, here is some links that can help you:

If those don’t help, or if this issue is reporting something you think isn’t right, you can always ask the humans behind semantic-release.


Invalid npm token.

The npm token configured in the NPM_TOKEN environment variable must be a valid token allowing to publish to the registry https://registry.npmjs.org/.

If you are using Two-Factor Authentication, make configure the auth-only level is supported. semantic-release cannot publish with the default auth-and-writes level.

Please make sure to set the NPM_TOKEN environment variable in your CI with the exact value of the npm token.


Good luck with your project ✨

Your semantic-release bot 📦🚀

New languages

First of all, very cool project :)

How hard would be to add new languages? How could I help with that? Can you give me some directions?

Thanks

Cannot update model: Bad Request

I am trying to update a model and I am running into an issue converting the model. The error I receive is pasted below, I believe it includes the entire JSON for the model. Thanks!

SOURCE_PROMOTE_UPDATED_APP_DEFINITION Failed
Request failed with status code 400
{ "data": "Microsoft.Azure.Documents.BadRequestException: Message: {\"Errors\":[\"One of the specified inputs is invalid\"]}\r\nActivityId: 0d2e86d7-653d-4051-bace-6484ba102def, Request URI: /apps/3aad1623-2e98-4588-b6fd-3ec68b500699/services/bdb80054-7661-4e51-bfbe-4a1c6c33e42b/partitions/0a136a89-9da6-4e95-a722-10102c31d471/replicas/131829633296717485p/\r\n at Microsoft.Azure.Documents.TransportClient.ThrowIfFailed(String resourceAddress, StoreResponse storeResponse, Uri physicalAddress, Guid activityId)\r\n at Microsoft.Azure.Documents.RntbdTransportClient.<InvokeStoreAsync>d__3.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n at Microsoft.Azure.Documents.ReplicatedResourceClient.<WriteAsync>d__17.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n at Microsoft.Azure.Documents.ReplicatedResourceClient.<InvokeAsync>d__15.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n at Microsoft.Azure.Documents.ReplicatedResourceClient.<>c__DisplayClass14_0.<<InvokeAsync>b__0>d.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n at Microsoft.Azure.Documents.BackoffRetryUtility`1.<>c__DisplayClass2_0`1.<<ExecuteAsync>b__0>d.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n at Microsoft.Azure.Documents.BackoffRetryUtility`1.<ExecuteRetry>d__3.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at Microsoft.Azure.Documents.BackoffRetryUtility`1.<ExecuteRetry>d__3.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n at Microsoft.Azure.Documents.BackoffRetryUtility`1.<ExecuteAsync>d__2`1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n at Microsoft.Azure.Documents.ReplicatedResourceClient.<InvokeAsync>d__14.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n at Microsoft.Azure.Documents.StoreClient.<ProcessMessageAsync>d__15.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n at Microsoft.Azure.Documents.Client.DocumentClient.<UpsertAsync>d__258.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n at Microsoft.Azure.Documents.Client.DocumentClient.<UpsertDocumentPrivateAsync>d__226.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n at Microsoft.Azure.Documents.BackoffRetryUtility`1.<>c__DisplayClass1_0.<<ExecuteAsync>b__0>d.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n at Microsoft.Azure.Documents.BackoffRetryUtility`1.<ExecuteRetry>d__3.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at Microsoft.Azure.Documents.BackoffRetryUtility`1.<ExecuteRetry>d__3.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n at Microsoft.Azure.Documents.BackoffRetryUtility`1.<ExecuteAsync>d__1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n at Microsoft.Azure.Documents.Client.DocumentClient.<UpsertDocumentInlineAsync>d__225.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n at BlisService.NetCore.Middleware.HttpStatusCodeExceptionEx.<WrapExceptionWithHttpStatusCodeException>d__0`1.MoveNext() in D:\\a\\1\\s\\BlisService.DataProvider\\HttpStatusCodeException.cs:line 40", "status": 400, "statusText": "Bad Request", "headers": { "cache-control": "no-cache", "content-type": "text/plain", "expires": "-1", "pragma": "no-cache" }, "config": { "transformRequest": {}, "transformResponse": {}, "timeout": 0, "xsrfCookieName": "XSRF-TOKEN", "xsrfHeaderName": "X-XSRF-TOKEN", "maxContentLength": -1, "headers": { "Accept": "application/json, text/plain, */*", "Content-Type": "application/json", "x-conversationlearner-memory-key": "D-1ea2a636358ea32644251b2d3431b9a0635fc3b440201e3b846c62e2248f38b4" }, "method": "post", "url": "http://localhost:3978/sdk/app/dd441b67-fddb-41ed-8097-eaea6e8f16ca/source", "data": "{\"actions\":[{\"actionId\":\"6879c30f-5f5c-4fee-8042-160347782026\",\"actionType\":\"API_LOCAL\",\"payload\":\"{\\\"payload\\\":\\\"GetCurrentWeather\\\",\\\"logicArguments\\\":[{\\\"parameter\\\":\\\"WeatherLocation\\\",\\\"value\\\":{\\\"json\\\":{\\\"kind\\\":\\\"value\\\",\\\"document\\\":{\\\"kind\\\":\\\"document\\\",\\\"data\\\":{},\\\"nodes\\\":[{\\\"kind\\\":\\\"block\\\",\\\"type\\\":\\\"line\\\",\\\"isVoid\\\":false,\\\"data\\\":{},\\\"nodes\\\":[{\\\"kind\\\":\\\"text\\\",\\\"leaves\\\":[{\\\"kind\\\":\\\"leaf\\\",\\\"text\\\":\\\"\\\",\\\"marks\\\":[]}]},{\\\"kind\\\":\\\"inline\\\",\\\"type\\\":\\\"mention-inline-node\\\",\\\"isVoid\\\":false,\\\"data\\\":{\\\"completed\\\":true,\\\"option\\\":{\\\"id\\\":\\\"eed05a28-cfa4-44e4-91f1-4080899543ce\\\",\\\"name\\\":\\\"WeatherLocation\\\"}},\\\"nodes\\\":[{\\\"kind\\\":\\\"text\\\",\\\"leaves\\\":[{\\\"kind\\\":\\\"leaf\\\",\\\"text\\\":\\\"$WeatherLocation\\\",\\\"marks\\\":[]}]}]},{\\\"kind\\\":\\\"text\\\",\\\"leaves\\\":[{\\\"kind\\\":\\\"leaf\\\",\\\"text\\\":\\\"\\\",\\\"marks\\\":[]}]}]}]}}}}],\\\"renderArguments\\\":[]}\",\"isTerminal\":true,\"requiredEntitiesFromPayload\":[],\"requiredEntities\":[\"eed05a28-cfa4-44e4-91f1-4080899543ce\"],\"negativeEntities\":[]},{\"actionId\":\"7dfe5cbb-6568-450c-b889-a543611fc847\",\"actionType\":\"TEXT\",\"payload\":\"{\\\"json\\\":{\\\"kind\\\":\\\"value\\\",\\\"document\\\":{\\\"kind\\\":\\\"document\\\",\\\"data\\\":{},\\\"nodes\\\":[{\\\"kind\\\":\\\"block\\\",\\\"type\\\":\\\"line\\\",\\\"isVoid\\\":false,\\\"data\\\":{},\\\"nodes\\\":[{\\\"kind\\\":\\\"text\\\",\\\"leaves\\\":[{\\\"kind\\\":\\\"leaf\\\",\\\"text\\\":\\\"Where do you want to see the current weather for?\\\",\\\"marks\\\":[]}]}]}]}}}\",\"isTerminal\":true,\"requiredEntitiesFromPayload\":[],\"requiredEntities\":[],\"negativeEntities\":[\"eed05a28-cfa4-44e4-91f1-4080899543ce\"],\"suggestedEntity\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\"},{\"actionId\":\"e47746ea-dc70-4b50-a7e6-53c5580ad48c\",\"actionType\":\"API_LOCAL\",\"payload\":\"{\\\"payload\\\":\\\"GetWeatherForecast\\\",\\\"logicArguments\\\":[{\\\"parameter\\\":\\\"WeatherLocation\\\",\\\"value\\\":{\\\"json\\\":{\\\"kind\\\":\\\"value\\\",\\\"document\\\":{\\\"kind\\\":\\\"document\\\",\\\"data\\\":{},\\\"nodes\\\":[{\\\"kind\\\":\\\"block\\\",\\\"type\\\":\\\"line\\\",\\\"isVoid\\\":false,\\\"data\\\":{},\\\"nodes\\\":[{\\\"kind\\\":\\\"text\\\",\\\"leaves\\\":[{\\\"kind\\\":\\\"leaf\\\",\\\"text\\\":\\\"\\\",\\\"marks\\\":[]}]},{\\\"kind\\\":\\\"inline\\\",\\\"type\\\":\\\"mention-inline-node\\\",\\\"isVoid\\\":false,\\\"data\\\":{\\\"completed\\\":true,\\\"option\\\":{\\\"id\\\":\\\"eed05a28-cfa4-44e4-91f1-4080899543ce\\\",\\\"name\\\":\\\"WeatherLocation\\\"}},\\\"nodes\\\":[{\\\"kind\\\":\\\"text\\\",\\\"leaves\\\":[{\\\"kind\\\":\\\"leaf\\\",\\\"text\\\":\\\"$WeatherLocation\\\",\\\"marks\\\":[]}]}]},{\\\"kind\\\":\\\"text\\\",\\\"leaves\\\":[{\\\"kind\\\":\\\"leaf\\\",\\\"text\\\":\\\"\\\",\\\"marks\\\":[]}]}]}]}}}}],\\\"renderArguments\\\":[]}\",\"isTerminal\":true,\"requiredEntitiesFromPayload\":[],\"requiredEntities\":[\"eed05a28-cfa4-44e4-91f1-4080899543ce\"],\"negativeEntities\":[]},{\"actionId\":\"a82611e1-faf3-4b1a-86c0-fb5c0fa54da3\",\"actionType\":\"TEXT\",\"payload\":\"{\\\"json\\\":{\\\"kind\\\":\\\"value\\\",\\\"document\\\":{\\\"kind\\\":\\\"document\\\",\\\"data\\\":{},\\\"nodes\\\":[{\\\"kind\\\":\\\"block\\\",\\\"type\\\":\\\"line\\\",\\\"isVoid\\\":false,\\\"data\\\":{},\\\"nodes\\\":[{\\\"kind\\\":\\\"text\\\",\\\"leaves\\\":[{\\\"kind\\\":\\\"leaf\\\",\\\"text\\\":\\\"For what city?\\\",\\\"marks\\\":[]}]}]}]}}}\",\"isTerminal\":true,\"requiredEntitiesFromPayload\":[],\"requiredEntities\":[],\"negativeEntities\":[\"eed05a28-cfa4-44e4-91f1-4080899543ce\"],\"suggestedEntity\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\"},{\"actionId\":\"7fbc0e2f-5a79-4cf8-a2b8-8b7837e4285a\",\"actionType\":\"API_LOCAL\",\"payload\":\"{\\\"payload\\\":\\\"GetGreetingResponse\\\",\\\"logicArguments\\\":[{\\\"parameter\\\":\\\"Greeting\\\",\\\"value\\\":{\\\"json\\\":{\\\"kind\\\":\\\"value\\\",\\\"document\\\":{\\\"kind\\\":\\\"document\\\",\\\"data\\\":{},\\\"nodes\\\":[{\\\"kind\\\":\\\"block\\\",\\\"type\\\":\\\"line\\\",\\\"isVoid\\\":false,\\\"data\\\":{},\\\"nodes\\\":[{\\\"kind\\\":\\\"text\\\",\\\"leaves\\\":[{\\\"kind\\\":\\\"leaf\\\",\\\"text\\\":\\\"Hello!\\\",\\\"marks\\\":[]}]}]}]}}}}],\\\"renderArguments\\\":[]}\",\"isTerminal\":true,\"requiredEntitiesFromPayload\":[],\"requiredEntities\":[],\"negativeEntities\":[]}],\"entities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"entityName\":\"WeatherLocation\",\"entityType\":\"LUIS\",\"isMultivalue\":false,\"isNegatible\":false},{\"entityId\":\"778919e3-89c8-433d-96c7-cff2d6c49d5f\",\"entityName\":\"builtin-datetimev2\",\"entityType\":\"datetimeV2\",\"isMultivalue\":true,\"isNegatible\":false}],\"trainDialogs\":[{\"trainDialogId\":\"4027ccbd-3b26-412c-8b32-339c1b2d328f\",\"rounds\":[{\"extractorStep\":{\"textVariations\":[{\"text\":\"Get weather for New York\",\"labelEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"startCharIndex\":16,\"endCharIndex\":23,\"entityText\":\"New York\",\"resolution\":{}}]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"New York\",\"displayText\":\"New York\",\"builtinType\":null,\"resolution\":{}}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"6879c30f-5f5c-4fee-8042-160347782026\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.0048487186431884766,\"contextDialogBlisTime\":0}}}]}]},{\"trainDialogId\":\"b450cf59-484b-41c9-ab41-968543acb16d\",\"rounds\":[{\"extractorStep\":{\"textVariations\":[{\"text\":\"Get weather for chicago\",\"labelEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"startCharIndex\":16,\"endCharIndex\":22,\"entityText\":\"chicago\",\"resolution\":{}}]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"chicago\",\"displayText\":\"chicago\",\"builtinType\":null,\"resolution\":{}}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"6879c30f-5f5c-4fee-8042-160347782026\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.004738807678222656,\"contextDialogBlisTime\":0}}}]},{\"extractorStep\":{\"textVariations\":[{\"text\":\"get weather for atlanta\",\"labelEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"startCharIndex\":16,\"endCharIndex\":22,\"entityText\":\"atlanta\"}]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"atlanta\",\"displayText\":\"atlanta\",\"builtinType\":null,\"resolution\":null}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"6879c30f-5f5c-4fee-8042-160347782026\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.010147333145141602,\"contextDialogBlisTime\":0}}}]},{\"extractorStep\":{\"textVariations\":[{\"text\":\"get weather for san francisco\",\"labelEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"startCharIndex\":16,\"endCharIndex\":28,\"entityText\":\"san francisco\"}]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"san francisco\",\"displayText\":\"san francisco\",\"builtinType\":null,\"resolution\":null}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"6879c30f-5f5c-4fee-8042-160347782026\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.00455164909362793,\"contextDialogBlisTime\":0}}}]}]},{\"trainDialogId\":\"dab17399-4e33-44e6-a88e-5992f82fde2a\",\"rounds\":[{\"extractorStep\":{\"textVariations\":[{\"text\":\"get me the latest weather\",\"labelEntities\":[]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"7dfe5cbb-6568-450c-b889-a543611fc847\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.00461268424987793,\"contextDialogBlisTime\":0}}}]},{\"extractorStep\":{\"textVariations\":[{\"text\":\"atlanta\",\"labelEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"startCharIndex\":0,\"endCharIndex\":6,\"entityText\":\"atlanta\"}]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"atlanta\",\"displayText\":\"atlanta\",\"builtinType\":null,\"resolution\":null}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"6879c30f-5f5c-4fee-8042-160347782026\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.010549545288085938,\"contextDialogBlisTime\":0}}}]},{\"extractorStep\":{\"textVariations\":[{\"text\":\"find weather\",\"labelEntities\":[]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"atlanta\",\"displayText\":\"atlanta\",\"builtinType\":null,\"resolution\":null}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"6879c30f-5f5c-4fee-8042-160347782026\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.004771709442138672,\"contextDialogBlisTime\":0}}}]}]},{\"trainDialogId\":\"a71c64f6-8c20-4f55-a460-d94438778e4a\",\"rounds\":[{\"extractorStep\":{\"textVariations\":[{\"text\":\"get forecast for seattle\",\"labelEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"startCharIndex\":17,\"endCharIndex\":23,\"entityText\":\"seattle\",\"resolution\":{}}]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"seattle\",\"displayText\":\"seattle\",\"builtinType\":null,\"resolution\":{}}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"e47746ea-dc70-4b50-a7e6-53c5580ad48c\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.00441288948059082,\"contextDialogBlisTime\":0}}}]}]},{\"trainDialogId\":\"8f454f54-65f0-48e1-8609-526812ce6a8a\",\"rounds\":[{\"extractorStep\":{\"textVariations\":[{\"text\":\"forecast for new york for tomorrow\",\"labelEntities\":[{\"entityId\":\"778919e3-89c8-433d-96c7-cff2d6c49d5f\",\"startCharIndex\":26,\"endCharIndex\":33,\"entityText\":\"tomorrow\",\"resolution\":{\"values\":[{\"timex\":\"2018-07-18\",\"type\":\"date\",\"value\":\"2018-07-18\"}]},\"builtinType\":\"builtin.datetimeV2.date\"},{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"startCharIndex\":13,\"endCharIndex\":20,\"entityText\":\"new york\"}]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"778919e3-89c8-433d-96c7-cff2d6c49d5f\",\"values\":[{\"userText\":\"tomorrow\",\"displayText\":\"2018-07-18\",\"builtinType\":\"builtin.datetimeV2.date\",\"resolution\":{\"values\":[{\"timex\":\"2018-07-18\",\"type\":\"date\",\"value\":\"2018-07-18\"}]}}]},{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"new york\",\"displayText\":\"new york\",\"builtinType\":null,\"resolution\":null}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"e47746ea-dc70-4b50-a7e6-53c5580ad48c\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.01273345947265625,\"contextDialogBlisTime\":0}}}]}]},{\"trainDialogId\":\"06135204-b193-4f28-82cf-23019ec4bb9b\",\"rounds\":[{\"extractorStep\":{\"textVariations\":[{\"text\":\"forecast for san juan for friday\",\"labelEntities\":[{\"entityId\":\"778919e3-89c8-433d-96c7-cff2d6c49d5f\",\"startCharIndex\":26,\"endCharIndex\":31,\"entityText\":\"friday\",\"resolution\":{\"values\":[{\"timex\":\"XXXX-WXX-5\",\"type\":\"date\",\"value\":\"2018-07-13\"},{\"timex\":\"XXXX-WXX-5\",\"type\":\"date\",\"value\":\"2018-07-20\"}]},\"builtinType\":\"builtin.datetimeV2.date\"},{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"startCharIndex\":13,\"endCharIndex\":20,\"entityText\":\"san juan\"}]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"778919e3-89c8-433d-96c7-cff2d6c49d5f\",\"values\":[{\"userText\":\"friday\",\"displayText\":\"2018-07-13 or 2018-07-20\",\"builtinType\":\"builtin.datetimeV2.date\",\"resolution\":{\"values\":[{\"timex\":\"XXXX-WXX-5\",\"type\":\"date\",\"value\":\"2018-07-13\"},{\"timex\":\"XXXX-WXX-5\",\"type\":\"date\",\"value\":\"2018-07-20\"}]}}]},{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"san juan\",\"displayText\":\"san juan\",\"builtinType\":null,\"resolution\":null}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"e47746ea-dc70-4b50-a7e6-53c5580ad48c\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.010332345962524414,\"contextDialogBlisTime\":0}}}]}]},{\"trainDialogId\":\"f8510d66-3fbf-4da6-9cb1-b7ed88c486a5\",\"rounds\":[{\"extractorStep\":{\"textVariations\":[{\"text\":\"what is the forecast for miami\",\"labelEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"startCharIndex\":25,\"endCharIndex\":29,\"entityText\":\"miami\"}]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"miami\",\"displayText\":\"miami\",\"builtinType\":null,\"resolution\":null}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"e47746ea-dc70-4b50-a7e6-53c5580ad48c\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.010632753372192383,\"contextDialogBlisTime\":0}}}]}]},{\"trainDialogId\":\"e6c16277-6f94-4611-983a-3dad172f4229\",\"rounds\":[{\"extractorStep\":{\"textVariations\":[{\"text\":\"get forecast\",\"labelEntities\":[]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"miami\",\"displayText\":null,\"builtinType\":null,\"resolution\":null}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"e47746ea-dc70-4b50-a7e6-53c5580ad48c\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.010773181915283203,\"contextDialogBlisTime\":0}}}]}]},{\"trainDialogId\":\"e348fcb0-3bb4-4904-b662-2fd395e8b36a\",\"rounds\":[{\"extractorStep\":{\"textVariations\":[{\"text\":\"get forecast\",\"labelEntities\":[]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"a82611e1-faf3-4b1a-86c0-fb5c0fa54da3\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.004817485809326172,\"contextDialogBlisTime\":0}}}]},{\"extractorStep\":{\"textVariations\":[{\"text\":\"Detroit\",\"labelEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"startCharIndex\":0,\"endCharIndex\":6,\"entityText\":\"Detroit\"}]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"Detroit\",\"displayText\":\"Detroit\",\"builtinType\":null,\"resolution\":null}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"e47746ea-dc70-4b50-a7e6-53c5580ad48c\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.0049588680267333984,\"contextDialogBlisTime\":0}}}]}]},{\"trainDialogId\":\"7f2db769-1d74-4eac-879f-6beb37018691\",\"rounds\":[{\"extractorStep\":{\"textVariations\":[{\"text\":\"show me the forecast\",\"labelEntities\":[]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"a82611e1-faf3-4b1a-86c0-fb5c0fa54da3\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.010964393615722656,\"contextDialogBlisTime\":0}}}]},{\"extractorStep\":{\"textVariations\":[{\"text\":\"dallas\",\"labelEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"startCharIndex\":0,\"endCharIndex\":5,\"entityText\":\"dallas\"}]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"dallas\",\"displayText\":\"dallas\",\"builtinType\":null,\"resolution\":null}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"e47746ea-dc70-4b50-a7e6-53c5580ad48c\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.010456323623657227,\"contextDialogBlisTime\":0}}}]}]},{\"trainDialogId\":\"c5d34be3-f5aa-4f4b-9d48-d87e6856b16e\",\"rounds\":[{\"extractorStep\":{\"textVariations\":[{\"text\":\"what's the weather\",\"labelEntities\":[]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"7dfe5cbb-6568-450c-b889-a543611fc847\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.010843992233276367,\"contextDialogBlisTime\":0}}}]},{\"extractorStep\":{\"textVariations\":[{\"text\":\"houston\",\"labelEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"startCharIndex\":0,\"endCharIndex\":6,\"entityText\":\"houston\"}]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"houston\",\"displayText\":\"houston\",\"builtinType\":null,\"resolution\":null}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"6879c30f-5f5c-4fee-8042-160347782026\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.009211301803588867,\"contextDialogBlisTime\":0}}}]}]},{\"trainDialogId\":\"e871c08a-3600-4b49-9e3e-c2e8c1db0a6a\",\"rounds\":[{\"extractorStep\":{\"textVariations\":[{\"text\":\"forecast for san diego for friday\",\"labelEntities\":[{\"entityId\":\"778919e3-89c8-433d-96c7-cff2d6c49d5f\",\"startCharIndex\":27,\"endCharIndex\":32,\"entityText\":\"friday\",\"resolution\":{\"values\":[{\"timex\":\"XXXX-WXX-5\",\"type\":\"date\",\"value\":\"2018-07-13\"},{\"timex\":\"XXXX-WXX-5\",\"type\":\"date\",\"value\":\"2018-07-20\"}]},\"builtinType\":\"builtin.datetimeV2.date\"},{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"startCharIndex\":13,\"endCharIndex\":21,\"entityText\":\"san diego\"}]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"778919e3-89c8-433d-96c7-cff2d6c49d5f\",\"values\":[{\"userText\":\"friday\",\"displayText\":\"2018-07-13 or 2018-07-20\",\"builtinType\":\"builtin.datetimeV2.date\",\"resolution\":{\"values\":[{\"timex\":\"XXXX-WXX-5\",\"type\":\"date\",\"value\":\"2018-07-13\"},{\"timex\":\"XXXX-WXX-5\",\"type\":\"date\",\"value\":\"2018-07-20\"}]}}]},{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"san diego\",\"displayText\":\"san diego\",\"builtinType\":null,\"resolution\":null}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"e47746ea-dc70-4b50-a7e6-53c5580ad48c\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.011905908584594727,\"contextDialogBlisTime\":0}}}]}]},{\"trainDialogId\":\"246015f8-0a1a-4382-8758-7cc0e0ade31b\",\"rounds\":[{\"extractorStep\":{\"textVariations\":[{\"text\":\"get today's forecast for san antonio\",\"labelEntities\":[{\"entityId\":\"778919e3-89c8-433d-96c7-cff2d6c49d5f\",\"startCharIndex\":4,\"endCharIndex\":8,\"entityText\":\"today\",\"resolution\":{\"values\":[{\"timex\":\"2018-07-18\",\"type\":\"date\",\"value\":\"2018-07-18\"}]},\"builtinType\":\"builtin.datetimeV2.date\"},{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"startCharIndex\":25,\"endCharIndex\":35,\"entityText\":\"san antonio\"}]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"778919e3-89c8-433d-96c7-cff2d6c49d5f\",\"values\":[{\"userText\":\"today\",\"displayText\":\"2018-07-18\",\"builtinType\":\"builtin.datetimeV2.date\",\"resolution\":{\"values\":[{\"timex\":\"2018-07-18\",\"type\":\"date\",\"value\":\"2018-07-18\"}]}}]},{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"san antonio\",\"displayText\":\"san antonio\",\"builtinType\":null,\"resolution\":null}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"e47746ea-dc70-4b50-a7e6-53c5580ad48c\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.004861116409301758,\"contextDialogBlisTime\":0}}}]}]},{\"trainDialogId\":\"2fe0e45d-f152-4efc-8557-7c585e2bc18f\",\"rounds\":[{\"extractorStep\":{\"textVariations\":[{\"text\":\"san diego forecast\",\"labelEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"startCharIndex\":0,\"endCharIndex\":8,\"entityText\":\"san diego\",\"resolution\":{}}]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"san diego\",\"displayText\":\"san diego\",\"builtinType\":null,\"resolution\":{}}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"e47746ea-dc70-4b50-a7e6-53c5580ad48c\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.010271787643432617,\"contextDialogBlisTime\":0}}}]},{\"extractorStep\":{\"textVariations\":[{\"text\":\"get southold forecast\",\"labelEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"startCharIndex\":4,\"endCharIndex\":11,\"entityText\":\"southold\",\"resolution\":{}}]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"southold\",\"displayText\":\"southold\",\"builtinType\":null,\"resolution\":{}}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"e47746ea-dc70-4b50-a7e6-53c5580ad48c\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.004563808441162109,\"contextDialogBlisTime\":0}}}]}]},{\"trainDialogId\":\"61cf0010-8094-4bf5-b790-5526aa2223b7\",\"rounds\":[{\"extractorStep\":{\"textVariations\":[{\"text\":\"forecast riverhead\",\"labelEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"startCharIndex\":9,\"endCharIndex\":17,\"entityText\":\"riverhead\",\"resolution\":{}}]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"riverhead\",\"displayText\":\"riverhead\",\"builtinType\":null,\"resolution\":{}}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"e47746ea-dc70-4b50-a7e6-53c5580ad48c\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.010507583618164062,\"contextDialogBlisTime\":0}}}]},{\"extractorStep\":{\"textVariations\":[{\"text\":\"get forecast for southold\",\"labelEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"startCharIndex\":17,\"endCharIndex\":24,\"entityText\":\"southold\"}]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"southold\",\"displayText\":\"southold\",\"builtinType\":null,\"resolution\":null}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"e47746ea-dc70-4b50-a7e6-53c5580ad48c\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.010514020919799805,\"contextDialogBlisTime\":0}}}]},{\"extractorStep\":{\"textVariations\":[{\"text\":\"get weather\",\"labelEntities\":[]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"southold\",\"displayText\":\"southold\",\"builtinType\":null,\"resolution\":null}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"6879c30f-5f5c-4fee-8042-160347782026\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.004446983337402344,\"contextDialogBlisTime\":0}}}]},{\"extractorStep\":{\"textVariations\":[{\"text\":\"get weather for riverhead\",\"labelEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"startCharIndex\":16,\"endCharIndex\":24,\"entityText\":\"riverhead\"}]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"riverhead\",\"displayText\":\"riverhead\",\"builtinType\":null,\"resolution\":null}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"6879c30f-5f5c-4fee-8042-160347782026\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.010509490966796875,\"contextDialogBlisTime\":0}}}]},{\"extractorStep\":{\"textVariations\":[{\"text\":\"get forecast for san diego\",\"labelEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"startCharIndex\":17,\"endCharIndex\":25,\"entityText\":\"san diego\"}]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"san diego\",\"displayText\":\"san diego\",\"builtinType\":null,\"resolution\":null}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"e47746ea-dc70-4b50-a7e6-53c5580ad48c\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.004609823226928711,\"contextDialogBlisTime\":0}}}]},{\"extractorStep\":{\"textVariations\":[{\"text\":\"get weather for seattle\",\"labelEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"startCharIndex\":16,\"endCharIndex\":22,\"entityText\":\"seattle\"}]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"seattle\",\"displayText\":\"seattle\",\"builtinType\":null,\"resolution\":null}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"6879c30f-5f5c-4fee-8042-160347782026\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.010826826095581055,\"contextDialogBlisTime\":0}}}]},{\"extractorStep\":{\"textVariations\":[{\"text\":\"get weather for lake george\",\"labelEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"startCharIndex\":16,\"endCharIndex\":26,\"entityText\":\"lake george\"}]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"lake george\",\"displayText\":\"lake george\",\"builtinType\":null,\"resolution\":null}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"6879c30f-5f5c-4fee-8042-160347782026\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.0051555633544921875,\"contextDialogBlisTime\":0}}}]},{\"extractorStep\":{\"textVariations\":[{\"text\":\"get weather for portland\",\"labelEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"startCharIndex\":16,\"endCharIndex\":23,\"entityText\":\"portland\"}]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"portland\",\"displayText\":\"portland\",\"builtinType\":null,\"resolution\":null}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"6879c30f-5f5c-4fee-8042-160347782026\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.010433673858642578,\"contextDialogBlisTime\":0}}}]}]},{\"trainDialogId\":\"24324bca-c1a5-4a72-9f00-8230312ffdb6\",\"rounds\":[{\"extractorStep\":{\"textVariations\":[{\"text\":\"hi there\",\"labelEntities\":[]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"7fbc0e2f-5a79-4cf8-a2b8-8b7837e4285a\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.010424613952636719,\"contextDialogBlisTime\":0}}}]}]},{\"trainDialogId\":\"06943458-1f48-46fe-a92b-3e4e11dae34c\",\"rounds\":[{\"extractorStep\":{\"textVariations\":[{\"text\":\"hello there\",\"labelEntities\":[]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"7fbc0e2f-5a79-4cf8-a2b8-8b7837e4285a\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.004800558090209961,\"contextDialogBlisTime\":0}}}]}]},{\"trainDialogId\":\"1f0bc973-30bc-42e6-a0c5-333a5d6e1a0f\",\"rounds\":[{\"extractorStep\":{\"textVariations\":[{\"text\":\"hi\",\"labelEntities\":[]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"7fbc0e2f-5a79-4cf8-a2b8-8b7837e4285a\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.005139589309692383,\"contextDialogBlisTime\":0}}}]},{\"extractorStep\":{\"textVariations\":[{\"text\":\"get weather for atlanta\",\"labelEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"startCharIndex\":16,\"endCharIndex\":22,\"entityText\":\"atlanta\"}]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"atlanta\",\"displayText\":\"atlanta\",\"builtinType\":null,\"resolution\":null}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"6879c30f-5f5c-4fee-8042-160347782026\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.010392427444458008,\"contextDialogBlisTime\":0}}}]}]},{\"trainDialogId\":\"51eace85-50fa-4651-9c54-a4a5de582233\",\"rounds\":[{\"extractorStep\":{\"textVariations\":[{\"text\":\"get forecast for seattle\",\"labelEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"startCharIndex\":17,\"endCharIndex\":23,\"entityText\":\"seattle\"}]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"seattle\",\"displayText\":\"seattle\",\"builtinType\":null,\"resolution\":null}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"e47746ea-dc70-4b50-a7e6-53c5580ad48c\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.010570049285888672,\"contextDialogBlisTime\":0}}}]},{\"extractorStep\":{\"textVariations\":[{\"text\":\"bar harbor forecast\",\"labelEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"startCharIndex\":0,\"endCharIndex\":9,\"entityText\":\"bar harbor\",\"resolution\":{}}]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"bar harbor\",\"displayText\":\"bar harbor\",\"builtinType\":null,\"resolution\":{}}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"e47746ea-dc70-4b50-a7e6-53c5580ad48c\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.010430097579956055,\"contextDialogBlisTime\":0}}}]},{\"extractorStep\":{\"textVariations\":[{\"text\":\"bar harbor weather\",\"labelEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"startCharIndex\":0,\"endCharIndex\":9,\"entityText\":\"bar harbor\",\"resolution\":{}}]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"bar harbor\",\"displayText\":\"bar harbor\",\"builtinType\":null,\"resolution\":{}}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"6879c30f-5f5c-4fee-8042-160347782026\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.010322093963623047,\"contextDialogBlisTime\":0}}}]},{\"extractorStep\":{\"textVariations\":[{\"text\":\"seattle weather\",\"labelEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"startCharIndex\":0,\"endCharIndex\":6,\"entityText\":\"seattle\",\"resolution\":{}}]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"seattle\",\"displayText\":\"seattle\",\"builtinType\":null,\"resolution\":{}}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"6879c30f-5f5c-4fee-8042-160347782026\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.00466609001159668,\"contextDialogBlisTime\":0}}}]},{\"extractorStep\":{\"textVariations\":[{\"text\":\"hi\",\"labelEntities\":[]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"seattle\",\"displayText\":\"seattle\",\"builtinType\":null,\"resolution\":{}}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"7fbc0e2f-5a79-4cf8-a2b8-8b7837e4285a\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.004698038101196289,\"contextDialogBlisTime\":0}}}]},{\"extractorStep\":{\"textVariations\":[{\"text\":\"forecast\",\"labelEntities\":[]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"a82611e1-faf3-4b1a-86c0-fb5c0fa54da3\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.00482177734375,\"contextDialogBlisTime\":0}}}]},{\"extractorStep\":{\"textVariations\":[{\"text\":\"portland\",\"labelEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"startCharIndex\":0,\"endCharIndex\":7,\"entityText\":\"portland\"}]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"portland\",\"displayText\":\"portland\",\"builtinType\":null,\"resolution\":null}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"e47746ea-dc70-4b50-a7e6-53c5580ad48c\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.010885000228881836,\"contextDialogBlisTime\":0}}}]},{\"extractorStep\":{\"textVariations\":[{\"text\":\"hello\",\"labelEntities\":[]}]},\"scorerSteps\":[{\"input\":{\"filledEntities\":[{\"entityId\":\"eed05a28-cfa4-44e4-91f1-4080899543ce\",\"values\":[{\"userText\":\"portland\",\"displayText\":\"portland\",\"builtinType\":null,\"resolution\":null}]}],\"context\":{},\"maskedActions\":[]},\"labelAction\":\"7fbc0e2f-5a79-4cf8-a2b8-8b7837e4285a\",\"metrics\":{\"predictMetrics\":{\"blisTime\":0.00500798225402832,\"contextDialogBlisTime\":0}}}]}]}]}" }, "request": {} }

Can not run this UI application on Azure Web App

I can't seem to make the UI application run on an Azure Web App. I don't know how to configure iss using web.config to work with startUiServer().

Could anyone please point me in the right direction? I lost 3 days trying multiple methods.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.