AI Zone Admin Forum Add your forum

CX Company, chatbot market leader in the Netherlands since 2005, will speak on the Amsterdam Chatbots Meetup on Wednesday, Oct 18!

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