2016-09-28 14 views
0

私は(WWWなし::電報:: BotAPI)純粋なperlの sendPhoto BotAPIメソッドの実装を助けが必要Perl |電報ボットとsendPhoto方法

私は問題なく送信シンプルテキスト

use LWP::UserAgent; 
use HTTP::Request::Common; 
use JSON::MaybeXS; 
.... 
.... 
    my $ua = LWP::UserAgent->new; 

    utf8::decode($message); 
    my $p = { 
      chat_id=>$groupid, 
      parse_mode=>'HTML', 
      text=>$message 
    }; 

    my $response = $ua->request(
     POST 'https://api.telegram.org/bot'.$token.'/sendMessage', 
     Content_Type => 'application/json', 
     Content   => JSON::MaybeXS::encode_json($p) 
     ); 
... 

しかしsendPhotoと

https://core.telegram.org/bots/api#sendphoto)私は問題がある。新しい画像をアップロードしたい場合は、どのJSONをサーバーに送信する必要がありますか?

chat_id=>$groupid, 
caption=>$message 
photo=> { ? binary blob here ? } 
+0

うーん、以下の有効な

my $p = [ chat_id => $groupid, caption => 'image caption', photo => ["/tmp/pdf.png"] ]; my $response = $ua->request( POST 'https://api.telegram.org/bot'.$token.'/sendPhoto', Content_Type => 'form-data', Content => JSON::MaybeXS::encode_json($msg) ); 

。ドキュメントは、InputFileオブジェクトがmultipart/formdataを使用して転記されるべきだと言います。しかし、それは変です。 – simbabque

+0

WWW :: Telegram :: BotAPIを使用していません。[ソース]からの借用はありません(https://v1.metacpan.org/source/ROBERTOF/WWW-Telegram-BotAPI-0.07/lib/WWW/Telegram/BotAPI .pm#L80)。私はそれがそこで終わった方法を勉強することをお勧めします。コンテンツの種類を切り替える必要があるように見えます。作者は、ソースでHTTP :: Request :: Commonを使ってそれを行う方法にリンクすることさえできるほど素晴らしかったです。そして一般的に、ソースには面白いコメントがあり、読んだだけの価値があります。 – simbabque

+0

なぜあなたはモジュールを使いたくないのですか? – Borodin

答えて

0

私はミスを犯す)

ファイルアップロードのため、私はJSONを必要としません!

間違っている!

my $p = [ chat_id => $groupid, 
      caption => 'image caption', 
      photo => ["/tmp/pdf.png"] 
]; 

my $response = $ua->request(
POST 'https://api.telegram.org/bot'.$token.'/sendPhoto', 
Content_Type => 'form-data', 
Content   => $msg 
); 
+1

あなたは答えを受け入れるかもしれません:) –

関連する問題