簡體   English   中英

Facebook Chatbot回發不起作用

[英]Facebook Chatbot postback not working

我已經用PHP設置了一個可用的Facebook聊天機器人,並使用以下其中一個回發按鈕構建了一個通用模板輪播:

[
type"=>"postback",
"title"=>"Opening Hours",
"payload"=>"Opening Hours"                                                                                              
],

按回發按鈕並檢查我的PHP日志,我得到:

{"object":"page","entry":[{"id":"457107221010xxx","time":1513219207386,
    "messaging": [{"recipient":
              {"id":"457107221010xxx"},"timestamp":1513219207386,"sender":
              {"id":"1510264525690xxx"},"postback":{"payload":"Opening 
            Hours","title":"Opening Hours"}}]}]}

我正在通過以下方式在我的代碼中處理此回發:

$postback = $input['entry'][0]['messaging'][0]['postback']['payload'];
if ($postback!="") {
 $answer = ["text"=> $openingHours];
}

但是在按了“ postback”按鈕后,在Messenger窗口中,messenger似乎在“鍵入”三個點對話框,顯示了幾秒鍾,但是隨后它停止了,沒有任何回復。 我確實在webhooks中啟用了“ message_postback”選項,並且其他查詢仍在工作(例如,如果我手動鍵入“ Opening Hours”,我將收到“ Opening Hours”答復)。 我使用以下代碼處理其他查詢,並且可以正常工作:

$sender     = $input['entry'][0]['messaging'][0]['sender']['id'];
$message    = $input['entry'][0]['messaging'][0]['message']['text'];
if(preg_match('[opening|hours]', strtolower($message))) {
        $answer =     ["text"=>"
                Opening Hours:
10:30 am – 1:00 am (Sun-Thu)"];
} else {
   //show menu
}

任何建議,不勝感激!

由於我看不到觸發實際發送的代碼,因此可以在此處找到錯誤。 如果您已經復制了基本教程,則可能看起來像是我很久以前開始的教程:

if(preg_match('[time|current time|now]', strtolower($message))) {
    $message_to_reply = date('l jS \of F Y h:i:s A');
} else {
    $message_to_reply = 'Huh! what do you mean?';
}

// your code here
$postback = $input['entry'][0]['messaging'][0]['postback']['payload'];
if ($postback!="") {
    $message_to_reply = "postback!";
    $foundPostback = true;
}

$url = 'https://graph.facebook.com/v2.11/me/messages?access_token='.$access_token;
$ch = curl_init($url);
$jsonData = '{
    "recipient":{
        "id":"'.$sender.'"
    },
    "message":{
        "text":"'.$message_to_reply.'"
    }
}';

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

if(!empty($input['entry'][0]['messaging'][0]['message']) || $foundPostback ){
    $result = curl_exec($ch);
}

注意$foundPostback 如果您的發送觸發器在本教程中看起來像這樣,它將不會發送消息,因為回發消息中沒有$input['entry'][0]['messaging'][0]['message']屬性。 因此,如果檢測到回發,則必須保留該標志。


在此處輸入圖片說明


但是,我強烈建議建立自己的類來處理消息,回發,傳遞,回聲等。 有關您可以在此處找到的更多信息: Facebook Messenger Docs

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM