line messaging apiでリッチメニューを作成

lineのリッチメニューを作成してみました。

line official account manager でリッチメニューは簡単に作成できるのですが、今回はリッチメニューにタブを付けるためにmessaging apiを使用しました。

messaging apiを使用することで、より複雑な画面を作成できました。

const width = 2500;
const height = 1686;
const switchHeight = 250;
const menuHeight = height - switchHeight;

export const richMenuAliasAtoB = 'rich-menu-alias-b';
export const richMenuAliasBtoA = 'rich-menu-alias-a';

const tabs: RichMenu['areas'] = [
  {
    bounds: {
      x: 0,
      y: 0,
      width: width / 2,
      height: switchHeight,
    },
    action: {
      type: 'richmenuswitch',
      richMenuAliasId: richMenuAliasAtoB,
      data: 'Bタブへ移動',
    },
  },
  {
    bounds: {
      x: width / 2,
      y: 0,
      width: width / 2,
      height: switchHeight,
    },
    action: {
      type: 'richmenuswitch',
      richMenuAliasId: richMenuAliasBtoA,
      data: 'Aタブへ移動',
    },
  },
];

export const mainRichMenu: RichMenu = {
  size: {
    width,
    height,
  },
  selected: true,
  name: 'name',
  chatBarText: 'Tap to open',
  areas: [
    ...tabs,
      {
         bounds: {
        x: 0,
        y: switchHeight,
        width: width / 3,
        height: menuHeight / 2,
      },
      action: {
        type: 'message',
        label: 'Q&A',
        text: '送信されるテキスト',
      },
   },

  ],
};

export const subRichMenu: RichMenu = {
  size: {
    width,
    height,
  },
  selected: true,
  name: 'name',
  chatBarText: 'Tap to open',
  areas: [
    ...tabs,
   
    {
      bounds: {
        x: width / 3,
        y: switchHeight,
        width: width / 3,
        height: menuHeight / 2,
      },
      action: {
        type: 'uri',
        label: 'ホームページ',
        uri: '遷移先URL',
      },
    },
  ],
};

ひとつややこしかったのは、リッチメニューを更新する際に@line/bot-sdkのcreateRichMenuとsetRichMenuを使用しますが、一度createRichMenuを実行したあとは、再度createRichMenu実行前にdeleteRichMenuAliasを実行する必要があるということです。

liffを含め多くの機能を試した結果、使用したのはmessaging apiだけになったのですが楽しかったので良かったです。

この記事が気に入ったらサポートをしてみませんか?