AI Zone Admin Forum Add your forum
Cannot load default ChatScript bot on an EC2 instance
 
 

Hey guys,
I am relatively new to the whole chatbots thing, but so far I have been able to install ChatScript on an EC2 instance. but when I run this command:

./LinuxChatScript64 client=localhost:1024 

and runs as expected as it initiates a normal chatbot simulation in the ssh session.
However when I try it from a web browser it simply doesnt work!
I am using the Amazon AMI and also it doesn’t seem to let me add the cronjob as well.
What could I be doing wrong?

 

 
  [ # 1 ]

Hi Timothy

to run the cs-server from command line:

./LinuxChatScript64 port=1024

to run the client “tester” (from command line):

./LinuxChatScript64 client=localhost:1024


Now,
what you mean with “when try it from a web browser” ?


giorgio

 

 
  [ # 2 ]

What I meant from a web browser is when I type my server’s DNS into the url bar, it loads the chat page as expected but does not load the bot when I fill out my username and message fields and sending it.

 

 
  [ # 3 ]

still not clear to me :-(
with “my server” do you mean a web frontend server ?

You have to implement in backend a tcp client that dialogate with ChatScript server. 


.————————.
| web server |
.————————.
  |   
  v
.—————————.
| CS TCP client |
.—————————-.
  |   
  v
.———————————-.
| CS engine server |
.———————————-.

 

 
  [ # 4 ]

Well I think it would be easier for me to show you what I mean.
Here is the link for the CS on the EC2 instance: ec2-13-55-23-160.ap-southeast-2.compute.amazonaws.com

However now that you have pointed that out to me I have a feeling that I have not set up the CS TCP client properly.

 

 
  [ # 5 ]

> However now that you have pointed that out to me I have a feeling that I have not set up the CS TCP client properly.

I think so. I feel it depends on ui.php PHP script (the CS-client) you call here:

function sendMessage(data)//Sends inputs to the ChatScript server, and returns the response-  data - a JSON string of input information
$.ajax({
 url
'ui.php',
 
dataType'text',
 
datadata,
    
type'post',
    
success: function(response){
  processResponse
(parseCommands(response));
    
},
    
error: function(xhrstatuserror){
  alert
('oops? Status = ' status ', error message = ' error "\nResponse = " xhr.responseText);
    
}
  })
;

As an example of a client you can see my draft code (in Ruby) here:
https://github.com/solyaris/rChatScript/

In particular, take a look at the volley method:
https://github.com/solyaris/rChatScript/blob/master/chatscript/lib/chatscript.rb#L82

BTW, CS wiki documentation:
https://github.com/bwilcox-1234/ChatScript/blob/master/WIKI/CLIENTS-AND-SERVERS/ChatScript-ClientServer-Manual.md

 

 

 
  [ # 6 ]

Giorgio thank you for your responses so far, but I would like to ask a couple more questions as I am still a ChatScript newbie.

I had a look at the links that you posted earlier but I am still a little lost when it comes to installing it on my EC2 instance.
Does this get installed inside the existing ChatScript directory or on the instance alone?

 

 
  [ # 7 ]

Timothy, if you talking about the CS-client (I presume ui.php), you have to install it where it’s able to reach the CS-server, so maybe (but not necessarly) in the same place you installed the CS-server (the EC instance).

May you share the PHP code (chunk of) ?

 

 
  [ # 8 ]

Hi Giorgio,

This is what the code looks like in ui.php file right now (the one that I had found in the WEBINTERFACE/BETTER folder)

If this is not it, should I install the client in the WEBINTERFACE folder as well?

GNU nano 2.5.3                                                        Fileui.php                                                                                                                        

 
*/

//  =============  user values ====
$host "192.168.0.1";  //  <<<<<<<<<<<<<<<<< YOUR CHATSCRIPT SERVER IP ADDRESS OR HOST-NAME GOES HERE
$port 1024;          // <<<<<<< your port number if different from 1024
$bot  "Harry";       // <<<<<<< desired botname, or "" for default bot
//=========================

// Please do not change anything below this line.
$null "\x00";
$postVars filter_input_array(INPUT_POSTFILTER_SANITIZE_STRING);
extract($postVars);

if (isset(
$send))
{
    
// open client connection to TCP server
        
$userip = ($_SERVER['X_FORWARDED_FOR']) ? $_SERVER['X_FORWARDED_FOR'$_SERVER['REMOTE_ADDR']// get actual ip address of user as his id

    
$msg $userip.$null.$bot.$null.$message.$null;

    
// fifth parameter in fsockopen is timeout in seconds
    
if(!$fp=fsockopen($host,$port,$errstr,$errno,300))
    
{
      trigger_error
('Error opening socket',E_USER_ERROR);
    
}

    
// write message to socket server
    
fputs($fp,$msg);
    while (!
feof($fp))
        
{
 $ret 
.= fgets($fp512);
    
}

    
// close socket connection
    
fclose($fp);
    exit(
$ret);
 

 
  [ # 9 ]

i’m not a PHP developer, but this css-client script you quoted seems ok for me.

Please verify if

$host = “192.168.0.1”;

is correct (= is the IP address where CS engine reside).

Maybe you can check is the server is reachable (from teh PHP script) with cli command nc (and giving three null character: ^@^@^@):

nc CS_SERVER_IP_ADDRESS 1024
^@^@^@ 

 

If your PHP script is located in the same host where is the cs-engine you can maybe say “localhost”:

$host = “127.0.0.1”;

I hope this help

 

 

 
  [ # 10 ]

Ok just ran that command that you told me about and I ran it a number of times just to verify.
This is along the lines of what I got when I ran that command.

ncserver timeout (1024

What can I do to resolve this and where else could I go as I am beginning to feel that this is more of a networking issue.

 

 
  [ # 11 ]

yes Timothy, seems that server IP isn’t reachable from client,  or you specify the wrong server address. If both client and server are in the same host, try: nc localhost 1024

 

 
  [ # 12 ]

Giorgio, I tried running both commands again and got this as the response to the first one that you told me to do:

ncconnect to 13.55.23.160 port 1024 (tcpfailedConnection timed out 

When I tried the second command that you said, won’t even process and just go to a new line.

 

 

 
  [ # 13 ]

it seems that you can’t reach the server address (from the client), or the server process is down.


1. try just to ping the host where cs-server is running:

$ ping 13.55.23.160

if you are able to ping the server, so:

2. verify that your cs-server is really up&running;, listening at port 1024

$ nmap 13.55.23.160


if your cs engine is alive you will see something like:

Starting Nmap 6.40 ( http://nmap.org ) at 2017-04-04 07:01 CEST
Nmap scan report for ...............
Host is up (0.0000060s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE
22/tcp   open ssh
...
1024/tcp open kdm
...


BTW, generally speaking, for security reasons…, i’ts better that you do NOT publish (in forums, etc.) you public IP addresses/ports pair.

 

 
  [ # 14 ]

About posting the IP adress that was a mistake on my part and won’t happen in future.
I tried pinging the server address and it timed out on every attempt, what could be the cause I hightly doubt that this is a contributing factor but I am using the Amazon AMI and I was thinking that this could be handling network traffic differently when compared with any other OS?

Is there anything that I should do/review anything that is on the AWS control panel?

Also have there been any differences when running ChatScript on Ubuntu compared to Amazon AMI?

 

 
  [ # 15 ]

> About posting the IP adress that was a mistake on my part and won’t happen in future.

it’s just a general suggestion grin not a real issue.


I’m not practice with Amazom AWS and I’m not a big fan of (Amazon) cloud, sorry.

My suggestion is to test your fullstack web+client+server on your local (linux) host, in that case:


to check is cs-engine respond:

$ nc 127.0.0.1 1024
^@^@^@
$

where ^@ means CTRL-SPACE


to send a message from user giorgio to the default running bot:

$  nc 127.0.0.1 1024
giorgio^@^@hello!^@

What is your first name?
$

 

 

 1 2 3 > 
1 of 3
 
  login or register to react