LINE公式アカウント MessagingAPIでリッチメニューを設定する

#APIを利用してリッチメニューを設定する
LINE公式アカウントでは、MessagingAPIを利用してリッチメニューを設定することができます。
このAPIを利用することで、LINE Official Account Managerではできない「個人別のメニュー」や「Postback」などを活用できます。

個人別に設定できることは、次のような利用が可能になります。

「複数のメニューを変更しながら使う」
「属性に合わせたメニューにする」　etc

##リッチメニューとは？
LINE公式アカウントのトーク画面の下に表示されるメニューです。
初期表示させることやタップすると表示することができます。

リッチメニューからは次のような操作ができます。
・トーク画面にメッセージを送信する
・タップすると指定のURLにリンクする
・Postbackアクションを送信する　※後述

![リッチメニュー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458381/55b8817c-225e-17e0-a709-c0b2de8dc518.png)

##リッチメニューからLIFF
前述したようにリッチメニューにはURLが設定できますので、LIFFを利用して自社システムへシームレスに連携させることも可能です。
例えばポイントカードの表示なども実装可能です。
LIFFについては、別の記事で書いていますので参考にしてください。

【LINE APIのLIFFを利用して紹介キャンペーン】
https://qiita.com/o_ishido/items/32af96ad725d6967bc31

##Messaging APIで設定できるリッチメニュー
APIを利用することで、デフォルトのリッチメニュー、個人別のリッチメニューをLINE公式アカウントに設定できます。
Messaging APIを使って最大で1000件のリッチメニューを作成できます。

###APIを利用して設定する順序
①　リッチメニューを作成する
②　リッチメニューの画像を登録する
③　リッチメニューをデフォルトに設定するか、個人に設定する

例えばリッチメニューの作成については、次のようにPOST送信を行います。　※PHPで送信する場合

                $json=array(
                    "size" => array(
                        "width" => 1200 ,
                        "height" => $height ,
                    ),
                    "selected" => false ,
                    "name" => "テストメニュー" ,
                    "chatBarText" => "メニューはこちら" ,
                    "areas" => array(
                        array(
                            "bounds" => array(
                                "x" => 0 ,
                                "y" => 0 ,
                                "width" => 1400 ,
                                "height" => 810 ,
                            ),
                            "action" =>array(
                    　　　　　　　　　"type" => "message" ,
                    　　　　　　　　　"text" => "メッセージを送信します。" ,
                　　　　　　　　　　　),
                        ),
                    ),
                );


        $url="https://api.line.me/v2/bot/richmenu";

        $headers = array(
            "Content-type: application/json",
            "Authorization: Bearer アクセストークン",
            );
    
        $ch = curl_init(); // はじめ

        //postするデータの配列
        $body = json_encode($json);

        curl_setopt($ch,CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
        curl_setopt($ch, CURLOPT_URL, $url); 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
        //ヘッダー追加オプション
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    
        $result =  curl_exec($ch);
        $result = mb_convert_encoding($result,"UTF-8","EUC-JP");
        curl_close($ch); //終了

POST送信すると、作成したリッチメニューごとにIDが返答されます。
このIDを使って画像を送信するとリッチメニューが設定されます。

##APIを利用するメリット
①　タップする領域を柔軟に設定することができる
x、Y座標で領域を指定できますので、上部にタブのような画像を設置して別メニューを表示させるといった処理も実装できます。

②　作成したリッチメニューを個人IDと紐づけること
個人別に紐づけられるので、属性に合わせて例えば男性用・女性用でメニューを分けることもできます。

③ Postbackアクションを利用できる　
Postbackアクションとは、LINE公式アカウントからWebhookで設定したdataを送信するアクションです。
例えば、リッチメニューをタップした方には、トークで「商品を見る」などのように表示させて
webhookでは別の文字列「item=1&・・・」のように送信させることができます。
この送信内容を処理してトークを返すことで色々な処理が実装できます。

##顧客管理とリッチメニュー
MessagingAPIを利用してシステムを構築すると、LINE公式アカウントに登録された友だち情報をデータベース化できます。
友だちを一律に扱うのではなく、それぞれの属性をチャットボットでアンケートを取り、取った結果に基づいてアプリの見た目を変えることが
リッチメニューでできることになります。

当社では、LINE公式アカウントをチャットボットとして利用して、リッチメニューをカスタマイズして顧客管理し、
セグメント配信やオートメーション配信する仕組みを提供しています。

詳しくは、北海道デジタル・アンド・コンサルティング株式会社（札幌市）までお問い合わせください。
LINE連携チャットボット　EDWARD（エドワード）にてLINE公式アカウントをどのようにカスタマイズできるかをご案内いたします。

http://hokkaido-dc.com/digital/edward