LINE Messaging API를 사용한 앵무새 반환 Bot (Perl)

개요



LINE Messaging API를 사용하여 Perl에서 앵무새 반환 Bot을 만들려고합니다.
계정은 LINE Business Center에서 구할 수 있습니다.

동작 이미지





이동하는 방법



Replay message이라는 API를 사용합니다.
Bot이 반응할 때까지의 거친 흐름은 다음과 같습니다. (굵은 글씨가 이번에 작성하는 처리)
  • Bot이있는 LINE 방에서 말한다
  • 미리 설정한 URL에 LINE 서버로부터 POST가 도착한다
  • POST 내용에서 메시지 본문과 회신 토큰 얻기
  • 회신 토큰을 사용하여 LINE 서버에 메시지 보내기
  • Bot이 메시지를 말한다

  • 소스 코드



    line_echo_bot.pl
    #!/usr/bin/perl
    use CGI;
    use JSON;
    use LWP::UserAgent;
    my $cgi  = new CGI();
    my $json = new JSON();
    my $ua   = new LWP::UserAgent();
    
    # API認証情報
    my $API_URI               = "https://api.line.me/v2/bot/message/reply";
    my $CHANNEL_ACCCESS_TOKEN = "xxxxx"; # LINE developersから取得したtokenを指定
    
    # LINEからPOST受信
    my $source = $cgi->param('POSTDATA');
    my $items  = $json->decode($source);
    my $event  = $items->{events}[0];
    
    # replyToken、投稿内容取得
    my $reply_token = $event->{replyToken};
    my $reply_text  = $event->{message}->{text};
    
    # LINEに200を返す
    print "Status: 200 OK\n";
    print "Content-Type: text/html\n\n";
    
    # 返信メッセージ作成、JSONエンコード
    my $data = {
        "replyToken" => $reply_token,
        "messages"   => [
            {"type"  => "text", "text" => "復唱するよ。"},
            {"type"  => "text", "text" => $reply_text}
        ]
    };
    my $content = $json->utf8(0)->encode($data);
    
    # POSTリクエスト生成
    my $req = HTTP::Request->new("POST", $API_URI);
    $req->header("Content-Type"  => "application/json");
    $req->header("Authorization" => "Bearer $CHANNEL_ACCCESS_TOKEN");
    $req->content($content);
    
    # POST送信
    $ua->request($req);
    
    

    이하의 개소를 수정하는 것으로, 한 번에 5건까지 메시지 송신이 가능합니다.
        "messages"   => [
            {"type"  => "text", "text" => "復唱するよ。"},
            {"type"  => "text", "text" => $reply_text}
        ]
    

    위의 샘플 코드는 GitHub에서 얻을 수 있습니다.
    htps : // 기주 b. 코 m / 유 26jp / ぃ ねえ ちょぼ t

    참고 자료



    API Reference - Messaging API
    API Reference - Webhook Event Object
    API Reference - Reply Message

    활용 예



    그룹 방에도 Bot을 참가시키는 것이 가능하므로, 여러가지 놀아 보세요.
    나는 스플래툰에서 잘 놀기 때문에, 이런 Bot을 만들어 보았습니다.

    좋은 웹페이지 즐겨찾기