2017-05-02 3 views
-1

Ich nehme die ID des Empfängers und versuchen, eine URL-Taste zurücksenden, aber ich bekomme eine "schlechte Anfrage" -Fehler.Facebook Messenger Plattform senden URL-Button gibt "schlechte Anfrage" Fehler

Ich denke, das Problem ist der JSON, aber ich kann es nicht herausfinden.

+0

Ist $ perlmanent_token definiert? Ist es eine globale Variable? Es ist nicht lexikalisch in deinem Sub. Sie können sich die vollständige Anfrage ansehen, indem Sie eine 'print $ req-> as_string' oder' $ req-> dump 'hinzufügen, bevor Sie sie senden. Alternativ können Sie LWP :: ConsoleLogger :: Everywhere laden, um die gesamte Transaktion zu überprüfen, um festzustellen, was nicht stimmt. – simbabque

+1

Ja, es ist definiert. –

+0

Ich sehe keine 'Nachrichten'-Kante vom Knoten 'user'. Meintest du "Posteingang"? – Borodin

Antwort

0

Das Problem war, dass ich vergaß, [] in das Feld Tasten zu setzen.

sub post_url_button_to_facebook { 
     my $reply_recipient = shift; 



     my %hash = ('recipient'=>{'id'=>$reply_recipient},'message'=>{'attachment'=>{'type'=>'template','payload'=>{'template_type'=>'button','text'=>"This my link",'buttons'=>[{'type'=>'web_url','url'=>'https://www.arx.gr/','title'=>"Dev's Website"}] }}}); 

    my $post_json_data = JSON::encode_json(\%hash); 

    my $ua = LWP::UserAgent->new; 

    my $url = "https://graph.facebook.com/v2.9/me/messages?access_token=" . $permanent_token; 

    my $req = HTTP::Request->new(POST => $url); 
    $req->header('Content-type' => 'application/json'); 
    $req->content($post_json_data); 

    my $resp = $ua->request($req); 

    if ($resp->is_success) { 

     my $message = $resp->decoded_content; 
     send_status_ok(); 

     warn "Received reply: $message\n"; 
    } 
    else { 
     warn "HTTP POST error code: ", $resp->code, "\n"; 
     warn "HTTP POST error message: ", $resp->message, "\n"; 
    } 
} 
Verwandte Themen