我正在尝试开发一个聊天机器人。
我对功能有疑问。
下面是代码的一部分:
<?php
require_once 'bootstrap.php';
require_once CB_HOME.'/library/CommonFunctions.php';
class testBot extends AbstractCbRest{
public function subscriptionCreated($userName){
return "Welcome ";
}
public function subscriptionDeleted($userName){
return "Thanks ";
}
public function messageReceived($from, $message){
return "" ; // how to return multiple here
}
在消息接收函数中,我将实现聊天机器人功能。
每当我收到来自用户的消息时,我都会返回一些东西。为此,我将不得不运行一些 php 脚本并进行一些 api 调用。我将发送给用户的最终结果。
所有这些都需要大约 20-25 秒。
有没有办法发送多个返回语句?就像在进行 API 调用时,我可以向用户发送消息,然后等待实际结果到来,然后发送它?我想不出一种方法,因为一旦我发送了一条消息,我就无法返回一些东西,直到并且除非用户回复一些东西。
使用数组:
public function messageReceived($from, $message){
return array(
'Welcome',
'Thanks',
'Hello',
'Whatever'
);
}
甚至是关联数组
array(
'msg1' => 'Welcome',
'msg2' => 'Thanks',
'msg3' => 'Hello',
'msg4' => 'Whathever'
)
然后,您可以将特定消息与:
array['msg1']
您可以创建一个数组并返回:
public function messageReceived($from, $message){
$retval = array();
$retval[] = "message1";
$retval[] = "message2";
return $retval;
}
或
public function messageReceived($from, $message){
return array("message1","message2");
}
听起来您需要考虑使用 AJAX,而不是在处理页面呈现时进行同步调用。