2012-05-29 37 views
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調用時一樣,我可以向用戶發送一條消息,然後等待實際結果出現,然後發送它? 我想不出一種方法,因爲只要我發送了一條消息,我就不能返回一些東西,除非用戶用某些東西回覆。

請幫助和抱歉的英語不好。

回答

0

聽起來好像您需要考慮使用AJAX,而不是在頁面呈現正在處理時進行同步調用。

+0

我不熟悉ajax!有沒有辦法在PHP中處理這個問題? – Shiven

+0

你可能會想看看類似jQuery的東西。這使您可以輕鬆地發出AJAX調用並處理異步返回值。創建一個PHP頁面來處理AJAX呼叫,例如JS使用$ .ajax(「postmessage.php」),最終返回「消息發佈」。在AJAX調用正在運行時,您的客戶端仍可以自由瀏覽您的頁面。你可能需要做一些谷歌搜索,因爲我不能容易地在幾百個字符 –

1

您可以創建一個數組,並返回:

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

public function messageReceived($from, $message){ 
    return array("message1","message2"); 
} 
+0

message2這個案例中應該是我從api調用得到的迴應的話題正義嗎? – Shiven

+1

@Siveive它可以是任何你想要它 - 布爾/數字/字符串等 – ManseUK

+0

有一個疑問,可以說$ message1 =「請稍候,加載」 和$ message2 = $迴應 當我返回數組時,在message2中存儲響應getts之前會有一段時間,它會返回$ message1,然後在某段時間後返回$ message2 – Shiven

4

使用數組:

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

甚至是一個關聯數組

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

然後你可以使用一個特定的消息:

array['msg1'] 
+0

哎呀,我想我重寫了一個編輯... – maxdec

+0

我從你的數組中刪除了最後一個逗號... – ManseUK