Watson Conversation Global Nodes - ibm-cloud

In Watson Dialog, you could add nodes in the "Global" folder that would be checked first no matter the state of the dialog. We used these to recover when the dialog was stuck or lost. The user was instructed to enter "start over" at any time no matter where in the dialog to reset things and begin again.
Is there a way to do something similar in Conversation?

As I understand Watson Conversation the dialog nodes are always evaluated top down. By default there are a Welcome and an Anything_else node. For your start over you would need to do the following:
define an intent to catch words for "start over", "begin again" or "reset".
Have a dialog node with a condition to match that intent, have that node close to the top of the tree
in that start_over dialog node you could process whatever you need, it is also possible to directly jump from there to any other node or just respond with "okay" and then wait for input again
For more complex processing of the start over you could also use nested processing as I have shown in my collection of samples.

Related

Sending a message from an event to a transition?

I'm trying to send a message to activate the transition in the second pic attached. I've used this command line
deliver("nuovo epicentro")
but it doesn't work. The transition is not in the main section, but in the agent Tir, while the event is in the main environment. How can i fix it?
Thank you.
enter image description here
enter image description here
You need to specify which 'tir' agent you want to send it to, how would AnyLogic know?
So you could write 'tirs.get(0).deliver...'. This will send it to the first agent in the population of 'tirs'. Note that it will throw an error if there is no agent in that population
On a broader note: you need to start understanding model hierarchy and how to navigate it. Do all the tutorials in the help, they show this quite a bit.

Is there a function in AnyLogic to display an alert message during model run?

I would like to display some text in an alert box similar to what the error() and errorInModel() methods create, but not as an error, just a simple message. I searched for a built-in method in the Help, but couldn't find anything.
It's not intended for an end user, just for myself as an alternative to printing to console during debugging.
No, but you can create an agent type with a visual warning msg.
Embed the agent in Main as myAgent.
When you have your issue, you jump into the agent using ((Main)getRootAgent()).myAgent._origin_VA.navigateTo();
this will visually jump into the agent.
It is up to you to change the msg in that agent using a text object, obviously.

My Node Red dashboard disappeared, my app says "not running" but won't restart

I am starting from the position of near absolute ignorance here.
I successfully set up a Bluemix account, added devices, got API keys, connected my Raspberry Pi running Node Red and a temperature sensor to Node Red on Bluemix, created a dashboard and was able to get data back and forth between Watson/Bluemix and my Pi. Cool. Unfortunately, I got all that way without ever really understanding the navigation of Watson/Bluemix nor all the terminology. I made NR work both ways and was happy.
Then one day last week, the route to my Bluemix Node Red application stopped being accessible:
404 Not Found: Requested route ('misterpi-01.mybluemix.net') does not exist.
I can browse my devices and see that they are sending data every few minutes, so clearly the connection is there. When I click on IBM Cloud Apps, I am told
There are no IBM Cloud applications bound to your organization
When I am on my IBM Cloud Dashboard and I click on Connections I see I have a connected application that is "Not Running" with a red dot. I can click Stop and the status goes to Stopped. When I click Start, after a short while,
I cannot add an another app because I can only have one.
Where did my NR app go and can I get it back (preferred) and if not, delete it?
At the suggestion of #hardillb I went looking for logs. I found them and it looks like the app is continuously started and crashing. I can't copy the text from the error logs but here is a screenshot.
The first thing you should do is get a copy of your flow source for backup. Go into the IBM Cloud Dashboard and click on Cloudant-ll (the suffix may be different?) and then Launch Cloudant Dashboard (alternatively, click on ...-cloudantNoSQLDB and then alias of Cloudant-ll). From there click on NodeRed and then select the id that ends with "/flow". Then you can extract everything inside "flow": [].
I would recommend emptying it out so you have no flows to ensure that Bluemix can start 'empty'. If you do this you will end up with something similar to mine below (don't change _rev).
{
"_id": "Home Assistant/flow",
"_rev": "102-2b38e1756eeb26def19b20858bc50a40",
"flow": []
}
Later you can paste the extracted code back into Node Red using Import > Clipboard.
You may also want to edit the ".../settings" document to remove any extra node types you installed.
Caveat - I had the same problems with Bluemix and eventually gave up - crashing at least weekly running out of memory and difficulty restarting. I suspect it can't reliably run with 256MB.
I had similar issues with log/errors and endpoint 404:
I followed Michaels advice to backup (nodered:flows and settings) in cloudant.
1. However what works(for now) was cleaning part of the nodered /settings.
2. Basically I removed the nodes part from the Json up until almost the end, leave _credentialSecret part at the end.
3. restart and go to your url, you will see your flows
4. if your flows use some nodes that produce warnings, it might be necessary to remove them to avoid future problems.
UPDATE 2: I saved every flow separately, and then deleted them all from the nodered flows. Then restarted, and have been importing one by one, and it is working.

IBM Watson Conversation : Intent is not triggering the dialog, all user inputs lead to anything_else

I'm a complete newb in this field, so started with the tutorial in the documentation. This is the page where I'm having problem.
I'm able to create the welcome dialog, and changes in the anything_else dialog are reflecting fine. But when I create a new dialog and set the trigger to the intent, it does not work. I've tried typing in the name, copy pasting it, clicking on (create new condition) and not. Tried different browsers and restarted project too.
There is a dropdown on the text that I type in the bot panel that says choose intent name and gives the list of two intents I've made. When I try clicking on the intent it's supposed to be in, I get this error :
Unable to change the intent. Error: Unique Violation: The value "good morning" already exists
I don't know what I'm doing wrong and googling it gives no result! Comment sections on different websites too seem to be having no problem with it as well.
Any help is appreciated!
Edit : JSON as downloaded from the project menu:
{"name":"Car tutorial","created":"2017-04-30T16:42:55.215Z","intents":[{"intent":"greeting","created":"2017-04-30T17:50:08.575Z","updated":"2017-04-30T17:50:08.575Z","examples":[{"text":"Good afternoon","created":"2017-04-30T17:50:08.575Z","updated":"2017-04-30T17:50:08.575Z"},{"text":"Good evening","created":"2017-04-30T17:50:08.575Z","updated":"2017-04-30T17:50:08.575Z"},{"text":"Good morning","created":"2017-04-30T17:50:08.575Z","updated":"2017-04-30T17:50:08.575Z"},{"text":"Hello","created":"2017-04-30T17:50:08.575Z","updated":"2017-04-30T17:50:08.575Z"},{"text":"Hi","created":"2017-04-30T17:50:08.575Z","updated":"2017-04-30T17:50:08.575Z"}],"description":null},{"intent":"turn_on","created":"2017-04-30T17:49:26.312Z","updated":"2017-04-30T17:49:26.312Z","examples":[{"text":"Air on please","created":"2017-04-30T17:49:26.312Z","updated":"2017-04-30T17:49:26.312Z"},{"text":"I need lights","created":"2017-04-30T17:49:26.312Z","updated":"2017-04-30T17:49:26.312Z"},{"text":"Listen to some music","created":"2017-04-30T17:49:26.312Z","updated":"2017-04-30T17:49:26.312Z"},{"text":"Play some tunes","created":"2017-04-30T17:49:26.312Z","updated":"2017-04-30T17:49:26.312Z"},{"text":"Turn on the headlights","created":"2017-04-30T17:49:26.312Z","updated":"2017-04-30T17:49:26.312Z"}],"description":null}],"updated":"2017-04-30T17:56:05.345Z","entities":[{"entity":"appliance","values":[{"value":"air conditioning","created":"2017-04-30T17:51:41.232Z","updated":"2017-04-30T17:51:41.232Z","metadata":null,"synonyms":["air"]},{"value":"headlights","created":"2017-04-30T17:51:41.232Z","updated":"2017-04-30T17:51:41.232Z","metadata":null,"synonyms":["lights"]},{"value":"music","created":"2017-04-30T17:51:41.232Z","updated":"2017-04-30T17:51:41.232Z","metadata":null,"synonyms":["radio"]}],"created":"2017-04-30T17:51:41.232Z","updated":"2017-04-30T17:51:41.232Z","metadata":null,"description":null},{"entity":"genre","values":[{"value":"classical","created":"2017-04-30T17:52:56.711Z","updated":"2017-04-30T17:52:56.711Z","metadata":null,"synonyms":["symphonic"]},{"value":"rhythm and blues","created":"2017-04-30T17:52:56.711Z","updated":"2017-04-30T17:52:56.711Z","metadata":null,"synonyms":["r&b"]},{"value":"rock","created":"2017-04-30T17:52:56.711Z","updated":"2017-04-30T17:52:56.711Z","metadata":null,"synonyms":["pop"]}],"created":"2017-04-30T17:52:56.711Z","updated":"2017-04-30T17:52:56.711Z","metadata":null,"description":null}],"language":"en","metadata":null,"description":"","dialog_nodes":[{"go_to":null,"output":{"text":{"values":["Hi! What can I do for you?"],"selection_policy":"sequential"}},"parent":null,"context":null,"created":"2017-04-30T17:55:24.851Z","updated":"2017-04-30T17:55:48.868Z","metadata":null,"conditions":"#greeting","description":null,"dialog_node":"node_3_1493574922154","previous_sibling":"node_1_1493574794528"},{"go_to":null,"output":{"text":{"values":["I'm sorry, I don't understand. Please try again."],"selection_policy":"sequential"}},"parent":null,"context":null,"created":"2017-04-30T17:53:39.404Z","updated":"2017-04-30T17:56:05.345Z","metadata":null,"conditions":"anything_else","description":null,"dialog_node":"node_5_1493574962852","previous_sibling":"node_3_1493574922154"},{"go_to":null,"output":{"text":{"values":["Welcome to the car demo!"],"selection_policy":"sequential"}},"parent":null,"context":null,"created":"2017-04-30T17:53:17.084Z","updated":"2017-04-30T17:53:57.004Z","metadata":null,"conditions":"welcome","description":null,"dialog_node":"node_1_1493574794528","previous_sibling":null}],"workspace_id":"2b6d0fdd-c04f-40e0-9310-0bba1ad38cef","counterexamples":[]}
Based on attached JSON, your problem is that Watson conversation is stuck in the training process (if the pink message is showing a long time, that means he stuck).
I cannot explain why it happened. But I know the solution, just use "conversation_start" instead of "welcome" trigger
Most probably, you placed "anything_else" node above your intent node.
Anything_else should be the latest node, because watson is executing it sequentional, once he will find match, it will go into.
Be sure, that you have the same order:

SugarCRM SOAP: Logging and Closing "Calls"

I'm trying to log Telephone Calls made via Skype to SugarCRM. I've been able to get as far as hooking onto Skype Events, creating a Call record in Sugar via SOAP (with status as Held or Not Held).
However, any call that I log as "Not Held" remains in an "Open" state (with that x mark beside it) in the Activities section and doesn't float up to the History subpanel.
Now if one clicks on the 'x' mark to close the call, the status changes to HELD and only then it moves up to History - which beats the purpose, as I want to log Unsuccessful Calls too.
Is this the default and unavoidable behavior of SugarCRM or is there a way to mark the call as not held and YET close it down? I don't seem to find any field in the sugar database that corresponds to the Close button.
I would add two records to the database close held and closed not held in sugar itself, and analyse the columns that have been updated in the database.
Then just update those columns too as part of your SOAP call.
Love the fact you've got skype logging to sugar... awesome!
You just need to update the status field with a value of 'Held' or 'Not Held' to have it show up in the History panel. I would check the database to make sure the value is being set correctly, and that you are putting in either 'Held' or 'Not Held' verbatim.