0

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

我对功能有疑问。

这是代码的一部分:

<?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 函数中,我将实现聊天机器人功能。

每当我收到来自用户的消息时,我都会返回一些东西。为此,我将不得不运行一些 php 脚本并进行一些 api 调用。我将发送给用户的最终结果。

所有这些将需要大约 20-25 秒。

有没有办法可以发送多个退货声明?就像在进行 Api 调用时,我可以向用户发送一条消息,然后等待实际结果出现然后发送它?我想不出办法,因为我一发送消息,除非用户回复某些内容,否则我无法返回某些内容。

4

3 回答 3

4

使用数组:

public function messageReceived($from, $message){
    return array(
        'Welcome',
        'Thanks',
        'Hello',
        'Whatever'
    );
}

甚至是关联数组

array(
    'msg1' => 'Welcome',
    'msg2' => 'Thanks',
    'msg3' => 'Hello',
    'msg4' => 'Whathever'
)

然后你可以使用特定的消息:

array['msg1']
于 2012-05-29T13:01:17.487 回答
1

您可以创建一个数组并返回:

public function messageReceived($from, $message){
  $retval = array();
  $retval[] = "message1";
  $retval[] = "message2";
  return $retval;
}

或者

public function messageReceived($from, $message){
  return array("message1","message2");
}
于 2012-05-29T13:00:59.690 回答
0

听起来您需要考虑使用 AJAX 而不是在处理页面呈现时进行同步调用。

于 2012-05-29T13:00:11.917 回答