2017-10-24 4 views
0

로봇이 완벽하게 응답하지만 일반/목록 템플릿을 표시 한 후 작동을 멈 춥니 다. 빠른 답장, 단추 및 텍스트 메시지와 같은 다른 메시지의 경우 제대로 작동합니다. 내 앱이 개발 모드 였고 공개로 변경되었지만 작동하지 않았습니다. 내 코드와 스크린 샷을 첨부했습니다.일반용 템플릿을 표시 한 후 Facebook Messenger 로봇이 작동을 멈 춥니 다.

내 코드에 무슨 문제가 있습니까?

Facebook Messenger bot screenshot

API 버전 : V2.10
페이스 북 페이지 : 플랫폼이 재 시도를 유지하기 때문에 https://www.facebook.com/yesira.net

namespace App\Http\Controllers; 
use Illuminate\Http\Request; 

class BotController extends Controller 
{ 
    public function bot(Request $request) 
    { 
     $data = $request->all(); 

     //get the user’s id 
     $id = $data["entry"][0]["messaging"][0]["sender"]["id"]; 
     $senderMessage = $data["entry"][0]["messaging"][0]["message"]; 
     $messageText = $data["entry"][0]["messaging"][0]["message"]["text"]; 

     if(!empty($senderMessage) && $messageText == "hi"){ 
      $this->sendTextMessage($id, "Hi buddy"); 
     } 

     else if($messageText == "blog") { 
        $answer = ["attachment"=>[ 
     "type"=>"template", 
     "payload"=>[ 
     "template_type"=>"generic", 
     "elements"=>[ 
      [ 
      "title"=>"Migrate your symfony application", 
      "item_url"=>"https://www.cloudways.com/blog/migrate-symfony-from-cpanel-to-cloud-hosting/", 
      "image_url"=>"https://www.cloudways.com/blog/wp-content/uploads/Migrating-Your-Symfony-Website-To-Cloudways-Banner.jpg", 
      "subtitle"=>"Migrate your symfony application from Cpanel to Cloud.", 
      "buttons"=>[ 
       [ 
       "type"=>"web_url", 
       "url"=>"www.cloudways.com", 
       "title"=>"View Website" 
       ], 
       [ 
       "type"=>"postback", 
       "title"=>"Start Chatting", 
       "payload"=>"Even want some more? say me!" 
       ]    
      ] 
      ] 
     ] 
     ] 
    ]]; 
    $response = [ 
         'recipient' => [ 'id' => $id ], 
         'message' => $answer 
        ]; 

        $this->reply($response); 
       } 
    else{ 
     $this->sendTextMessage($id, "Hello world!"); 
    } 
    } 
    private function reply($jsonData) 
    { 
     $ch = curl_init('https://graph.facebook.com/v2.6/me/messages?access_token=' . env("PAGE_ACCESS_TOKEN")); 

     curl_setopt($ch, CURLOPT_POST, true); 
     curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($jsonData)); 




     curl_exec($ch); 

     curl_close($ch); 
    } 
    private function sendTextMessage($recepientId, $messageText) 
    { 
     $messageData = [ 
      "recipient" => [ 
       "id" => $recepientId, 
      ], 
      "message" => [ 
        "text" => $messageText, 
       ] 
     ]; 
     $ch = curl_init('https://graph.facebook.com/v2.6/me/messages?access_token=' . env("PAGE_ACCESS_TOKEN")); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     curl_setopt($ch, CURLOPT_HEADER, false); 
     curl_setopt($ch, CURLOPT_HTTPHEADER, ["Content-Type: application/json"]); 
     curl_setopt($ch, CURLOPT_POST, true); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($messageData)); 
     curl_exec($ch); 
     curl_close($ch); 
    } 
} 

답변

0

은 아마 새 이벤트를받지 못하고있다. Webhook 이벤트에 200OK로 응답해야합니다.

+0

빈 "200OK"응답을 추가하려고했지만 여전히 작동하지 않았습니다. 내 코드에''200OK ''응답을 어떻게 추가하는지 알려주시겠습니까? – Macobse

+0

https://stackoverflow.com/questions/3258634/php-how-to-send-http-response-code – amuramoto