page with intent and static fulfillment response, sys.no-match has also static respone
training phrases for intents
Using one of the training phrase triggers sys.no-match instead of the intent.
How do I get it to match the intent correctly?
edit: I ended up changed back from advanced NLU to standard NLU and now it works fine. I initially changed to advanced NLU because I thought it was better but turns out I was wrong
Normally the Standard NLU is automatically trained after any intent changes, however, switching to the Advanced NLU disables automatic training and the flow needs to be actively trained via the ‘Train’ button in the ML settings. Note that Auto Train is not available for the Advanced NLU setting.
In your situation, despite the intent creation, the training may have not been updated afterwards due to the Advanced NLU setting not automatically doing the training, resulting in the non-updated behavior.
In short: to properly use the Advanced NLU setting, you must press the ‘Train’ button before testing and wait for the training status to end ‘Training in progress’ so that the behavior of your Agent reflects the changes made since the last training session.
Related
I have a requirement to add custom quality gate condition on my project. If that is not met then my build should fail.
I have already configured sonarqube enterprise to my project pipeline, and in sonarqube under quality gates I couldn't find add new quality gate and also couldn't add conditions in the existing quality gate.
Please help me with this.
And also what would be the best conditions that can be provided as if it doesn't pass then build has to fail
You can use SonarQube's web API or REST API to add new quality gate and also to add conditions in the existing quality gate.
Here are two web API's:
To create quality gate
POST api/qualitygates/create
To add conditions in the existing quality gate
POST api/qualitygates/create_condition
Note: You need the Administer Quality Gates permission to execute both the API's.
This is an achieved under the UI and via the API. You cannot modify the Built-In Gate, but you can copy it, modify the copy and set that as the default. Requires the 'Administer Quality Gates' permission. Details as of LTS 8.9.0 - May '21.
VIA API:
Check your installation web_api reference (because SQ does not publish it independently to the web and they change it often).
Create a Quality Gate:
POST {sq_url}/web_api/api/qualitygates/create ?name=<value>
Add a new condition to a quality gate:
POST {sq_url}/web_api/api/qualitygates/create_condition ?metric=<condition>&error=<threshold>
Set a quality gate as the default quality gate:
POST {sq_url}/web_api/api/qualitygates/set_as_default ?name=<value>
VIA UI:
Under Quality Gates, pick the Gate you wish to use as your base, click Copy, give it a name; "Copy".
Choose Add Condition, choose scope (New or Overall Code), Quality Gate criteria from the drop-down options, failure threshold; "Add Condition". Repeat as necessary.
I have written code that is supposed to help us automate some specific cases. It will create a addresstag for the customer and change the status of the case to "Address Tag Sent".
All this works as intended, but for some reason the status of the case is changed back to "New".
As you can see here there is an event called "Activate" that changes the status.
I haven't found what this event is or why it occurs. I have gone through all the Workflows we got, all processes, all code (As good as I can) and spent a good amount of time trying to google it but I still come out empty handed.
Is there someone who might know what this event is? Or maybe got any idea how to access/modify it?
'Activate' will essentially re-activate any record and put the statuscode back to the default statuscode\status reason - I am guessing your default is set to 'New'.
I would investigate in these directions:
Since “changed by” showing as “CRM migration account”, this maybe an ETL job like SSIS, or Scribe which is syncing data changes from outside integration
Maybe the same service account is used by plugin, to reset the StateCode and StatusCode on some business logic
Is there some Business process flow stages available in your form, as I see “Service stage” attribute in audit before that, there may be logics coupled with that
Verify the dependencies of statecode attribute in customizations to see any SDK steps or workflows referencing that. Check in your code repos and check with any long timers in your project for any business logics implemented in the past.
Can anyone clarify how to configure follow up intents or prompts like in api.ai ? I am trying to create an application similar to api.ai using rasa nad spacy as backend.
Rasa NLU is just for the intent and entity classification. From their website:
Rasa NLU is an open source tool for intent classification and entity extraction. You can think of it as a set of high level APIs for building your own language parser using existing NLP and ML libraries.
To implement conversation or dialogue you need a different tool or to program your own solution.
Popular ones in the Rasa community are:
botkit.ai
Rasa Core
Articulate
As Keller said, it can be done with Rasa-core. DialogFlow supports both (input) parameters and “contexts”. Rasa also supports both (input) parameters and contexts with “Rasa slots”.
There are three steps:
1) In slots section of domain.yml, you can add a context, for example:
slots:
zipcode:
type: text
request_user_affirm:
type: text
2) request_user_affirm is the context slot, which will be filled by a customAction
3) use the context in your stories:
* inform{"zipcode": "78733"}
- bot_request_affirm
* deny{"request_user_affirm": "yes"}
- utter_request_info
bot_request_affirm is the custom action which will fill the request_user_affirm slot. if next user intent is deny and request_user_affirm is set, than the bot will response with utter_request_info action.
have fun with rasa-core.
RASA Core was specifically built for this, rather than creating a
dialog flow with simple if-else statements, RASA Core uses machine
learning to decide the flow.
More Information here
I am working on designing a lengthy approval system in CRM using a combination of OOB workflows (designed using CRM UI Workflow Designer) and custom actions (actions written using .NET code). Idea is to keep the entire branching/simpler logic in OOB workflow and call custom Actions wherever necessary. However I have few questions with this approach:
How can I handle run-time errors generated in the action code?
For example, one of my Actions contain the code to push data to an external system via web service. In case this web service call fails, I need to perform some steps in the parent workflow.
How can I handle 'if conditions' which can't be handled by 'Check Condition' step? For example, suppose that before performing a certain workflow step I need to check some data which can't be queried within CRM. I can create an Action which will return true/false based on the custom logic which can then be checked in parent workflow.
An alternate approach would be to use plugins but I am inclined towards using OOB functionalities as much as possible. Any inputs would be helpful.
First of all let's clear the semantics, because I'm not sure if you understand what are you talking about - there are Actions (you can refer to them as custom actions, but then you should refer to every workflow you create as custom and I figured out of your post that you are describing them as OOB, which also is semantically wrong - every workflow you create is a custom workflow, maybe it's using OOB steps, but that's a different story) and Custom Workflow Activities. I'm assuming that you want to use Custom Workflow Activities, because the are more suited for what you are trying to achieve here. Also you tagged your question as CRM 2011 and CRM 2013 - not sure what you meant, because Actions were not available for CRM 2011.
So basically Custom Workflow Activities can have Input and Output parameters. Output parameters are answer to both your questions, because you can use them to get the error message after your custom processing or use then in conditional statements later in your workflow. Output parameters can be defined like that:
[Output("Error message")]
public OutArgument<string> ErrorMessage { get; set; }
You can find more examples here:
https://technet.microsoft.com/en-us/library/gg327842.aspx
You can of course set this properties simply by calling
ErrorMessage.Set(executionContext, messageText)
So now when you define your workflow, wherever you need something not configurable in OOB blocks, you can put your Custom block, after it's done simply check it's output for the error (this is just an example, you can pimp it up by adding additional output parameters, to make it more generic), if it's empty then do something, if not then do something else for example send email with the error message. It all depends on what are you trying to achieve.
Actions are serving different purposes, they are useful to create a logic that can be easily called through plugin or javascript (webAPI) and allows you to also put a plugin on it alongside doing everything within one transaction. Maybe it will be useful somewhere in your workflow, but as far as I remember in CRM 2013 actions could not be called from a workflow...
UPDATE:
Ok so if we are dealing with CRM 2016, we can call Action from a workflow. What is best in this situation really depends on the scenario and what we are trying to achieve, but to make it easier to decide let me highlight main differences:
1) Activities are simply a blocks of code that can be put inside your workflow. Actions by themself are not code, they are custom Messages that you can call. Of course you can register a plugin on this custom Message and do there any custom logic you want, but this is another step to take
2) Actions can be run in transaction, Activities not (but you can run Activities inside Actions, so in this case they can run in transaction)
3) Actions can be called directly from Javascript, plugins and workflows. It's a great thing, but if you will make let's say 10 custom Actions which you will be using ONLY inside you one workflow, they will be visible when you will be registering plugins (and also any js developer will be able to call them with JS)
So basically Actions are a big, fat feature that can serve many purposes (including running Activities on their own!), Activities are much simpler but in your case they will also do their job. So you should ask yourself questions:
Do I need my logic to run inside transaction?
And
Do I need to call this logic somewhere else than my workflow?
If you have any "Yes" then go for Actions, of no, then go for Activities, because you will be overcomplicating things without any good reason.
I want to update the status using single common way in c#.
For now I know about SetStateRequest but it did not change its status to any of status. e.g. If i want to change status to fulfilled for order or canceled for order then it requires FulfillSalesOrderRequest and CancelSalesOrderRequest .Like wise different different class for quote's status and others.
So I want some common way for change status.If is there any solution please suggest me.
If you are on CRM 2015 Update 1 or later, SetStateRequest has been deprecated in favor of a normal UpdateRequest, as seen on MSDN:
Before Microsoft Dynamics CRM Online 2015 Update 1, specialized
messages were required to update certain entity attribute values. Now,
UpdateRequest can now be used to set these attributes. The following
table identifies the specialized deprecated message requests and the
related message attributes that can be updated using UpdateRequest.
With that being said, FulfillSalesOrderRequest (and the corresponding Requests for quotes) have not been deprecated, so you still need to use them going forward. The common reqeust you are looking for does thus not exist.