On Saturday, November 11, 2017 at 7:13:31 PM UTC-8, Maurice Waka wrote:
>
> Why I said that:
>
>    1. Loading takes too long  to load
>    2. I get an error: invalid controller..see below
>    3. 
>    ​
>    
>
>
Loading takes too long?  the LOAD helper should be faster than a page 
refresh, give or take a cache hit.

Do you have the file my-chatbot-app/controllers/messages.py, and does it 
have the function answers() ?

/dps

 

> On Sat, Nov 11, 2017 at 1:58 PM, Maurice Waka <[email protected] 
> <javascript:>> wrote:
>
>> Thanks for the reply and details. It will take me several weeks juts to 
>> get something to work out. As I had said, am not an expert in this as I do 
>> part time programming; I have to study it first then practice till I get 
>> something to work out.
>> Is it OK if you give me a working example?...😜
>> Kind regards
>>
>> On Sat, Nov 11, 2017 at 9:32 AM, Dave S <[email protected] <javascript:>
>> > wrote:
>>
>>>
>>>
>>> On Friday, November 10, 2017 at 1:30:40 AM UTC-8, Maurice Waka wrote:
>>>>
>>>> Hi everyone.
>>>> For several months, though not a python expert, nor a web2py guru 
>>>> either, I have been working on a simple bot. I borrowed from this site: 
>>>> https://codepen.io/pavel_komiagin/pen/gaGJJK
>>>> [...]
>>>> I also don't want page refreshed on posting the question, that it works 
>>>> like other bots where the messages appear from the bottom as they come in. 
>>>> Ifigured out that maybe as the page refreshes, that's when the cursor 
>>>> moves 
>>>> first up then to the bottom of the page, then the message appears.
>>>> I dont mind a new code or referral.
>>>>
>>>
>>> That "append to the current page" stuff is ajax.  Web2py has a very 
>>> handy wrapper for ajax, the LOAD() helper.
>>> <URL:
>>> http://web2py.com/books/default/chapter/29/12/components-and-plugins#LOAD
>>> >
>>> The target argument specifies where on the page to put the results ... 
>>> you need a DIV that matches.
>>>
>>> My example, which goes in the view file:
>>>
>>> {{=LOAD(c='myhosts', f='myhosts2.load', target='my_hosts', 
>>> content="something's 
>>> happening", ajax=True)}}
>>>
>>>
>>> To continually append more messages, instead of replacing old with new, 
>>> you would need to have multiple DIVs, and point to a different DIV for each 
>>> message.
>>>
>>> The above code will run automatically on initial page load, which you 
>>> may or may not want, depending on whether you want messages from a previous 
>>> visit to appear.
>>>
>>> I have done some stuff where I want a user to click a button to get more 
>>> information, and so I fabricate an html string in the controller, put the 
>>> string into the dict I return, and the view displays the string in the 
>>> appropriate part of the page.
>>>
>>> The string includes something like this:
>>>
>>>     dis_str = CAT(dis_str, TT("                                "),
>>>                  A("mystuff list", _href=URL("mystuff.html", vars=dict(
>>> ipaddr=ipaddr, hnam
>>> e=hname, tdisk=index)),
>>>                     _style="visibility:visible", _id="stuffh"),
>>>                 TT("\n        "),
>>>                 TAG.BUTTON('mystuff list', _type="button", _name=
>>> "val2controller", _value=val2controller,
>>>                              _onclick='$("#mystuff_div").html("updating 
>>> ..");ajax("mystuff.load", ["val2controller"], "mystuff_div")',
>>>                              _style="display:none", _id="mystuffa"))
>>>
>>> I think you can manipulate the DIV name either server side or client 
>>> side, but I haven't tested any code for that purpose.
>>>
>>> Server side: keep the name in the session object, update it on each 
>>> load, and in the view/controller/response.load file use the DIV helper 
>>> after you display your messages.  This will end up nesting the DIVs, but I 
>>> don't think that's a problem.  Caveat coder.
>>>
>>> Client side:  use javascript to tap into the onclick path, and insert a 
>>> new DIV into the DOM, then use that DIV's name in the ajax call.  You may 
>>> have to go direct to ajax in this scheme, rather than using the LOAD 
>>> helper.  This will require a little more study, but look at the other 
>>> material in the book's component chapter, and it may help you out.
>>>
>>> Note that using ajax requires that your users allow javascript from your 
>>> site, and there are plenty of people reluctant to do that, but if they are 
>>> going to trust your site they might as well trust your site.  Using 
>>> something like noscript gives them some confidence that they protected 
>>> against cross-site scripting attacks, but they can whitelist your site to 
>>> view your pages.  (noscript is for firefox; I don't know the equivalent in 
>>> other browsers, but chrome has some of the features built in but not as 
>>> easily tuned.)
>>>
>>> Good luck!  I hope this helps, and that I haven't fed you too much bogus 
>>> information.
>>>
>>> /dps
>>>
>>> -- 
>>> Resources:
>>> - http://web2py.com
>>> - http://web2py.com/book (Documentation)
>>> - http://github.com/web2py/web2py (Source code)
>>> - https://code.google.com/p/web2py/issues/list (Report Issues)
>>> --- 
>>> You received this message because you are subscribed to a topic in the 
>>> Google Groups "web2py-users" group.
>>> To unsubscribe from this topic, visit 
>>> https://groups.google.com/d/topic/web2py/eH5y3Yvz56Q/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to 
>>> [email protected] <javascript:>.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to