Using the wildcard element (AIML) on botlibre for my chatbot - artificial-intelligence

my chatbot isn't responding to using a wildcard when used in the 1st way shown below.
<category>
<pattern>*</pattern>
<that>MY LITTLE HUMAN HELLO WHAT IS YOUR NAME</that>
<template>Owh, nice to meet you, <set name="name"><star/></set>. I should already know your name but my system is still getting used to your brain and the way things are stored here... Do you know who I am?</template>
</category>
The above one does not work. I can't just enter my name. BUT the one below works, when I put my name in a full sentence (it also works with other variations of a sentence, just not on its own):
<category>
<pattern>MY NAME IS *</pattern>
<template>Owh, nice to meet you, <set name="name"><star/></set>. I should already know your name but my system is still getting used to your brain and the way things are stored here... Do you know who I am?</template>
</category>
Not sure what my mistake is. I've tried changing things to play around with it but nothing's worked so far. Also tried googling and searching but am unable to find a solution that works (or maybe I'm searching the wrong thing?). Thanks in advance!

This is because your first category has a <that> tag in it and unless your bot has just said, "MY LITTLE HUMAN HELLO WHAT IS YOUR NAME", this category will never be called. The solution is to either remove the <that> tag or to amend it to whatever the bot has actually said.

Related

How to get more info about a specific attribute?

I guess this is a stupid question, so I apologize in advance but I couldn't find the answer anywhere and I guess I didn't even really know how to search for an answer.
How do I find out more about an attribute (not even sure if that's the right word)? For example, if I do:
listAttr bifrostShape1
then I get a long list of ... attributes? .. one of them is called "particleChannel". I want to know more about "particleChannel" so I tried:
listAttr "bifrostShape1.particleChannel"
got nothing basically - returned: "particleChannel" , so I tried:
getAttr "bifrostShape1.particleChannel"
and I got result: "position"...
this is actually what I think I'm looking for and I want to know more about this, what is this "position"?
searching for "particleChannel" in the reference and online gave me nothing, and trying "listAttr and getAttr of "bifrostShape1.particleChannel.position" gave me an error..
What I'm actually trying to achieve is to get attributes of the particles in a bifrost liquid... but my question is actually: How do I find out more about something when I stumble over it like this? What is the way to find out more about a command or attribute?
This is my favorite way to learn so I really hope that there's a good way to do it in maya.
See this: attributeQuery
You can do a lot of queries about an attribute, see docs in the link.

How to tag text, to keep track of unique edits

So, for example in database I have three users: Peter, John and Sara. There is a specific field, in which all three users can write.
Peter writes:
"I like apples"
, after that John appends with
" and I like bananas"
. Now I have field which says
"I like apples and I like bananas"
, so If I would like to display, which part was writen by whom, my approuch would be to create html tags:
The field would be:
<span class="text-sequence-1">I like apples</span><span class="text-sequence-2"> and I like bananas</span>
and then, from database I would pick the sentences by its order and using CSS on hover on display additional content, on each part of hover on.
1st problem. The problem is if, the third user, Sara, comes and
updates the text, which belongs to both original. Which can be
overcome if I allow to edit one by one Johns and Peters tags.
Then I get edited span inside of original spans and could track
which part was edited and how. If I did like this, I would still
face a second problem:
2nd problem. If Sara decides to edit, for example Johns part, a few
times. I would still get nested badly.
I could use something like #number tags instead of spans, so I can track where each edition ends, but then I couldn't apply CSS code to them to color which part belongs to who and apply additional effects on hover, like showing a box, who edited it and when.
Any ideas how could I implement it?
Sorry for my bad english.
Since you are using a database, keep track of the edits in a separate table. For each edit, keep the following fields:
row-ID of this edit (primary key)
the parent row-ID (the row-ID of the "current edit" when the edit was started/confirmed; see below for how to use)
the author that edited things
the time-stamp
an optional short text describing what was changed (for example, "fixed spelling")
When showing the field, you can then display a link to a "history", that would show who edited what when. You can show individual differences between any two versions such as Wikipedia does when you look at the history of a page - there are many libraries to do that, with highlighting and all. This library seems nice, but there are many others, in all sorts of languages.
When someone starts to edit, let them modify the then-current version (highest time-stamp). When they commit their edit (click accept or similar), check again to see that nobody else has changed things while they were editing (the time-stamp of the parent edit is still highest). If someone did change something, show them the difference between your parent-row and the edit, and tell them to fix things before committing (there may be several edits to take into account). This is the "wikipedia way", and it amounts to a sort of lightweight version control (much easier to implement than, say, Git)
Acually I think that this approach is not good. As you noticed you will get alot of nasty nestings.
What if somone edits only one letter?
Instead of that, think about line comparison approach. Like Git does. So compare if first line changed and store each version.( More sophisticated way would be only storing lines that changed and applying changes like git patches.)
I think your way is destined to fail. It's far way too complex and there is no logical comparision method to be used.
John is cool
John is uncool
John is Uncool
John is weak
Think how you would tag those. What if somone deletes piece of text? Edit will not be visible or u will insert an empty tag (which will not be visible)?
Dont tag, compare. Tagging is not what you're looking for i think. Also please see: Text comparison algorithm

How to display dynamic marker label info from database

For the past month or so I have been trying to solve this problem. I checked the website extensively, including all tutorials I could find, and even bought a book. I previously posted but have had no luck. Hopefully I have more info to get some help.
Basically I have a map in my FileMaker database. Everything works fine, except for one thing I would like to change. When I roll over each marker I would like to see the label show the customers name, instead of the static "Marker 1", "Marker 2", etc.
I included a link to dropbox that has the html, the MarkersArray custom function and hopefully all the info that's passed to the Html that may be needed. Through much trial and terror, I can't figure out how to make it happen. Any help or guidance would be greatly appreciated.
Thanks
Steve
https://dl.dropboxusercontent.com/u/71328624/GoogleMapsDocs/html.txt
https://dl.dropboxusercontent.com/u/71328624/GoogleMapsDocs/ss1geo.png
instantiate a variable that calculates the company name inside of your for loop. replace "Marker" +i with the variable.

How to add a custom field into template.php using Zen sub theme

First time poster here, I'm a designer not skilled at all with php and I have a small issue I don't seem to be able to solve. I'm making a site in drupal 7 using a sub theme on zen.
Btw this is a great CMS, even though people say it's really more a developers CMS. I have no trouble to do what I need using views, rules, display suite etc. So a big thank you for all the developers out there making this such a good CMS. But for this apparently simple problem... no module will help me (I think) and I'm kinda stuck.
So here it is: I'd like to add a subtitle next to the title in all my pages.
So what I did was to add a custom field into the content type basic page (machine name: field_sub_title) which is a simple text field.
I uncommented the following line in my template.php
function mytheme_preprocess_page(&$variables, $hook) {
$variables['sub_title'] = t('field_sub_title');
}
Now my question is how do I load the content of my custom field into that variable?
I know i need to change the second part, but I don't have a clue as into what I need to change this.
Displaying the variable into the the page.tpl.php is something I know about so I only need help with the first part.
{EDIT}
Ok I found how to do this :)
I was looking for a solution in the wrong place. I don't need to change any thing in the template.php file.
Just needed to add this bit of code into my page.tpl.php:
<?php
print $node->field_sub_title['und'][0]['value'];
?>
So I'm posting this here for other Drupal newbies struggling with this....
Your solution may work for now, but there may be a more Drupal-y way to handle a problem like this. If you haven't noticed any problems yet, you may find one or more of the following issues down the road:
Someone who doesn't know php or Drupal theming may need to change the way this works.
If you're like me, you may forget where exactly in code this was implemented.
You may see superfluous markup and/or errors on nodes (content) that do not have this sub-title field (ie. event content not having a sub-title field while basic pages and news articles do).
When you add a field to a content type, it will automatically appear anytime content in that content type is displayed. You should be able to add the sub-title field for your page, event or whatever else you need and have it automatically appear in the markup.
You can 'manage display' of a content type to drag and drop the order for fields to appear. You could take it a step further by using a module like Display Suite to add formatting or layout per-content type.
If you feel like this isn't good enough and the markup for the subtitle must be at the same level as the page title (which is rare), at least add an if statement to make your code check to see if the variable is present before trying to print it. I'd also add a new variable and comments for code readability.
<?php
$subtitle = $node->field_sub_title['und'][0]['value'];
if($subtitle){
print $subtitle;
}
?>
Consider using field_get_items or field_view_value, or at least use the LANGUAGE_NONE constant instead of 'und'
See https://api.drupal.org/api/drupal/modules%21field%21field.module/function/field_get_items/7 and https://api.drupal.org/api/drupal/modules!field!field.module/function/field_view_value/7
This has the added benefit of reducing the number of potential security holes you create.

phpQuery behaving weird, changing HTML

I want to process a template with a Google plusone button in it through phpQuery and I run into the following problem:
require_once( "phpQuery.php" );
$p = phpQuery( "<g:plusone></g:plusone>" );
echo $p->html();
the expected output would be:
<g:plusone></g:plusone>
But instead the output of this is:
<plusone></plusone>
Which doesn't match up with what google is expecting, so the button doesn't work any more. How can I stop phpQuery from changing (fixing?) my code, or how can I work around this problem without changing the string from plusone to g:plusone once the processing is done? (that's a nasty workaround, plus, I run into more of these 'translation'-problems in phpQuery).
I had the same problem while including a google+ badge. I could force the code generator from google to generate code with a div container. I just had to tick the "html5 valid code" checkbox.
I've been looking all over for solutions for this problem, to no avail. I found a horrible workaround. I'm sure this is NOT the most elegant way to do this, but at least it fixes the problem.
Instead of the tags:
<g:plusone>...</g:plusone>
use:
<g__0058__plusone>...</g__0058__plusone>
Then simply str_replace the result before you're outputting:
echo str_replace("__0058__",":",$doc->html());
Basically in a tag where you would normally put a colon (:) you put 0058 instead. It's a very non-elegant solution, I realise that, but at least it's a workaround to this old problem.

Resources