我正在尝试开发一个聊天机器人。
我对功能有疑问。
以下是代码的一部分:
<?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
}
在messageReceived函数中,我将实现chatbot功能。
每当我收到来自用户的消息时,我都会返回一些内容。为此我必须运行一些PHP脚本并进行一些api调用。最终结果我将发送给用户。
这一切大约需要20-25秒。
有没有办法可以发送多个return语句? 就像在进行Api调用时一样,我可以向用户发送消息然后等待实际结果然后发送它? 我想不出办法,因为一旦我发送了一条消息,除非用户回复某些内容,否则我无法返回任何内容。
答案 0 :(得分:4)
使用数组:
public function messageReceived($from, $message){
return array(
'Welcome',
'Thanks',
'Hello',
'Whatever'
);
}
甚至是关联数组
array(
'msg1' => 'Welcome',
'msg2' => 'Thanks',
'msg3' => 'Hello',
'msg4' => 'Whathever'
)
然后您可以使用特定消息:
array['msg1']
答案 1 :(得分:1)
您可以创建一个数组并返回:
public function messageReceived($from, $message){
$retval = array();
$retval[] = "message1";
$retval[] = "message2";
return $retval;
}
或
public function messageReceived($from, $message){
return array("message1","message2");
}
答案 2 :(得分:0)
听起来你需要考虑使用AJAX,而不是在处理页面渲染时进行同步调用。