一次多个退货声明?

时间:2012-05-29 12:57:07

标签: php return chatbot

我正在尝试开发一个聊天机器人。

我对功能有疑问。

以下是代码的一部分:

<?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调用时一样,我可以向用户发送消息然后等待实际结果然后发送它? 我想不出办法,因为一旦我发送了一条消息,除非用户回复某些内容,否则我无法返回任何内容。

3 个答案:

答案 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,而不是在处理页面渲染时进行同步调用。