Botium Box crawler test case failing on Watson Assistant buttons - automated-tests

I am using Botium Box crawler on a Watson Assistant skill.
The bot's initial statement includes a greeting and seven buttons.
Botium is generating test cases for each of the buttons, but the button-press does not generate the right response in Watson Assistant.
A generated case is below:
1.6.2.2.2.4_hello_Password
#bot
#me
hello
#bot
UTT_M1_HI-THERE!
#bot
BUTTONS Benefits|Badges, Explanation of Badges or Certificate of Completion|COVID-19|ID Cards - Order, View, Print, Return|Employment/Termination|Password|None of the above, enter search text
#me
BUTTON password|Password
#bot
(responds as if Watson Assistant received the word "BUTTON" rather than the "password" value in "Password"-labeled button)
The dialog node has child responses using conditions like:
input.text=="password" or input.text.contains("password")
The expected behavior in Watson Assistant for a button press is that the button text (not label) is passed to the button. In the Watson Assistant Try it Out panel I click "Password" and it sends the text "password".
The only way I can replicate the Botium behavior in Try it Out is to pass the literal text "BUTTON". Even if Botium sent input.text=="BUTTON password|Password" my condition should fire.
Am I using Botium Box crawler wrong, or is there a bug in the crawler?
Update: Other button-driven prompts work, such as "yes/no" button prompts. I wonder if there is a parsing problem because the buttons have very long labels with some special characters and punctuation.

The issue has to be fixed with the next release of the crawler package.
If you need this fix now, then we can update directly your trial instance.

You can get more detailed log by set the DEBUG=botium-* env variable. So in commandline it should look like this:
DEBUG=botium-* botium-cli crawler-run --entryPoints 'hello'
In this case you will get a log and very detailed log. You can reduce its size with using exitCriteria (e.g.: --exitCriteria 'Benefits' 'Badges') to exclude those path which work correctly.
We will investigate the detailed log, just send us please.

Related

Simulate a click on start button (at bots)

Is it possible to simulate a click on the start button without saying /start ?
This button simply sends a message with "/start" as the text to the bot, which can be done with client.send_message:
client.send_message(bot, '/start')
If it has parameters add them after a space:
client.send_message(bot, '/start argument')
Raw API also has messages.startBot which offers some more flexibility and I believe hides the start message.

How to refer to a user in chat with their UIDs?

I have an array of User IDs which I've set as admins and I would like to print them to clients when they call the /admins command.
The main issue is that I couldn't see or find a way to print a placeholder entity (it's mention in this case) which opens a chat window with the IDs I've specified.
Remember that when you post #username in a chat, Telegram simply binds it as a mention to the referenced user and it jumps on a chat window when you click on it. I wonder if there is an equivalent for #123456789, where the number represents the User ID.
if you create/send a message from a bot, you can set parse_mode to HTML, then send text/caption with HTML anchor tag same this:
for contact me, just click here
but if you want to send message as user, you can just use userName prefixed by #, and creating manual link to tg://user?id=123 or type plain text like tg://user?id=123, don't work in Telegram now. yes; just in iOS (less than 15% of Telegram user) that work since 2013!

Lotus Notes - Refresh form after button click

I have a form which have a section. This section have a hide-when formula
#If(flag = " 1 ";#False;#True)
I created a button which has the formula: #Setfield("flag";"1") . But, the section doesn't appear immediately, it seems it needs a Refresh. I put right after #Command([ViewRefreshFields]) but I have the following message:
" .... not found in name & address book or any domino directory ".
The button doesn't have Refresh fields on keyword changes, like other design items.
Please help, I appreciate your time.
This Error Message comes from a property of one of your name- fields. This property is on the second tab and sais "Look up addresses on document refresh". It has nothing to do with you button and will most probably also appear when you simply press F9...

Tag parameters only come through on new tab

I'm using Google Analytics via Google Tag Manager. I'm on Chrome and checking tags using Google Tag Assistant.
I've noticed that for many, if not most of the events I have tagged, the parameters will not pass through unless the link or key webpage they are clicking on opens in a new tab.
In HttpFox the result is a NS_BINDING_ERROR or something along those lines.
For example, if you visit this site, you can see there are two means of navigating to the "submit report" page - the CTA on the top right and in the main nav. I'd like to understand how the CTA performs compared to the main nav so have set up events, but the event only fires if I open the links in new tabs.
What does this error mean and what should I do about it?
To get rid of the ns binding error, have the onclick return false - Documentation Here.
In regards to the event not getting passed, I'm seeing in httpfox that the tid (on the event) is UA-34035531-[1-6]. That doesn't look quite right. How are you setting the account id?

How to display the custom message in SDL Tridion Message bar?

I want to display my custom message (Say for Ex: some message needs to display when Page is save event is triggered) in SDL Tridion CME Message bar. How to do this?
From an event system you can only display ERROR messages.
If your Event code throws an error the "Message" will be displayed in the Message bar.
For other type of messages you need to use Javascript/CM Extensions. You can find an example of an event system that shows a message here.
Nuno covered your options pretty well.
If you want to show a message from your JavaScript code, this is usually my starting point:
$messages.registerNotification("Hello world");
If you put this in your JavaScript code (or just paste it into a JavaScript console), it will show a blue bar with "Hello World" in it.
There are many types of messages, each of which shows up slightly differently. What I usually do if I need more than a notification is:
type $messages. in a JavaScript console in a browser where the web GUI is loaded
go through the list of relevant methods to see what looks most promising (they all start with register)
perform a text search on the source code for the method that I am looking for
This leads me to an example of how that method is used in the GUI already and is a great starting point for my own code.
Update
Alexander Klock recently wrote a thorough explanation of the message types available on his blog.

Resources