Node.jsでLINE Botを作るときの複数リプライメモ #linedc


どこが配列になるっけ... がよく忘れるのでメモ

## まずは通常

```js
return client.replyMessage(event.replyToken, {
    type: 'text',
    text: responseMsg //実際に返信の言葉を入れる箇所
});
```

## 2件リプライ

```js
return client.replyMessage(event.replyToken, [{
	type: 'text',
	text: '1件目'
  },
  {
	type: 'text',
	text: '2件目'
  }
]);
```

> ![スクリーンショット 2021-06-10 10.36.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/38a78be9-98c4-9441-b262-13ed56a46ead.png "スクリーンショット 2021-06-10 10.36.09.png")

## 一度のリプライは5件まで

現時点だと6件以上はエラーになります。

```js
    return client.replyMessage(event.replyToken, [{
        type: 'text',
        text: '1件目'
      },
      {
        type: 'text',
        text: '2件目'
      },
      {
        type: 'text',
        text: '3件目'
      },
      {
        type: 'text',
        text: '4件目'
      },
      {
        type: 'text',
        text: '5件目'
      }
    ]);
  }
```

> ![スクリーンショット 2021-06-10 10.38.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/0598f8a4-67b8-78d0-12a3-110ce8f48359.png "スクリーンショット 2021-06-10 10.38.41.png")


## テキストと画像を同時にリプライ

画像のメッセージオブジェクト詳細は[こちら](https://developers.line.biz/ja/reference/messaging-api/#image-message)を参考にしましょう。

```js
return client.replyMessage(event.replyToken, [{
    type: 'text',
    text: '1件目'
  },
  {
    type: 'image',
    originalContentUrl: 'https://i.gyazo.com/ff363c0d05710b9803349c9e5423cce1.png',
    previewImageUrl: 'https://i.gyazo.com/ff363c0d05710b9803349c9e5423cce1.png'
  }
]);
```

> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/68d82330-f855-4eaa-3f8d-b282d1a095a3.png" width="400px">

## さらにスタンプも同時にリプライ

スタンプのメッセージオブジェクト詳細は[こちら](https://developers.line.biz/ja/reference/messaging-api/#sticker-message)を参考にしましょう。


```js
return client.replyMessage(event.replyToken, [{
    type: 'text',
    text: '1件目'
  },
  {
    type: 'image',
    originalContentUrl: 'https://i.gyazo.com/ff363c0d05710b9803349c9e5423cce1.png',
    previewImageUrl: 'https://i.gyazo.com/ff363c0d05710b9803349c9e5423cce1.png'
  },
  {
    type: 'sticker',
    packageId: '446',
    stickerId: '1988'
  }
]);
```

> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/8dfa00dc-d6cd-7b74-60f2-6d4b08baa06c.png" width="400px">



## さらにFlex Messageも同時にリプライ

ここまでくるとJSONがぐちゃぐちゃですが一応できます。

JSON崩れるとバグるので[FLEX MESSAGE SIMULATOR](https://developers.line.biz/flex-simulator/)の利用はほぼマストかも。

```js
return client.replyMessage(event.replyToken, [{
    type: 'text',
    text: '1件目'
  },
  {
    type: 'image',
    originalContentUrl: 'https://i.gyazo.com/ff363c0d05710b9803349c9e5423cce1.png',
    previewImageUrl: 'https://i.gyazo.com/ff363c0d05710b9803349c9e5423cce1.png'
  },
  {
    type: 'sticker',
    packageId: '446',
    stickerId: '1988'
  },
  {
    "type": "flex",
    "altText": "this is a flex message",
    "contents": {
      "type": "bubble",
      "body": {
        "type": "box",
        "layout": "vertical",
        "contents": [
          {
            "type": "button",
            "action": {
              "type": "postback",
              "label": "ぼたん1",
              "data": "button1",
              "displayText": "ほげほげ"
            },
            "gravity": "top"
          },
          {
            "type": "button",
            "action": {
              "type": "postback",
              "label": "ぼたん2",
              "data": "button2",
              "displayText": "ふがふが"
            }
          }
        ]
      }
    }
  }
]);
```

> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/28db42b0-aae1-d675-344d-1fc2619dd488.png" width="400px">

## まとめ

複数メッセージは5件までなら送れますが、Flex Messageを使った瞬間にJSON地獄になるのでご利用は計画的に