Closed9

LINE Developer やっていき2

もっくま(Mistletoe)もっくま(Mistletoe)

友だち登録↓公式アカウントにとりあえずメッセージ送信してみる。

https://developers.line.biz/ja/reference/messaging-api/#send-broadcast-message

curl -v -X POST https://api.line.me/v2/bot/message/broadcast \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {channel access token}' \
-d '{
    "messages":[
        {
            "type":"text",
            "text":"Hello, world1"
        },
        {
            "type":"text",
            "text":"Hello, world2"
        }
    ]
}'

これでとりあえずメッセージ投げられることを確認

もっくま(Mistletoe)もっくま(Mistletoe)

メッセージを受け取ったりはWebhookで受け取るっぽい。
とりあえず以下を実装して、適当にオープンなエンドポイントでアクセスできるようにして、管理コンソールに設定して検証できることを確認。

import { Hono } from 'hono'
const app = new Hono()

app.post('/json', (c) => c.json({
    "success": true,
    "timestamp": new Date().toISOString(),
    "statusCode": 200,
    "reason": "OK",
    "detail": "200"
  }))

export default app

https://developers.line.biz/ja/reference/messaging-api/#test-webhook-endpoint

もっくま(Mistletoe)もっくま(Mistletoe)

この検証がOKであれば、とりあえずユーザーからのメッセージ受け取り自体はできるようになっている。
適当なメッセージを送信すると、リクエストボディ内に以下のようなオブジェクトが入っている。
メッセージの内容や、ユーザーid等が含まれていることが確認できる。

https://developers.line.biz/ja/reference/messaging-api/#webhook-event-objects

※実際に検証したコード

import { Hono } from 'hono'
const app = new Hono()

app.post('/json', async (c) => {
    const body = await c.req.json()
    console.log("body", body);
    console.log("message", body.events[0].message);
    console.log("source", body.events[0].source);

    return c.json({
        "success": true,
        "timestamp": new Date().toISOString(),
        "statusCode": 200,
        "reason": "OK",
        "detail": "200"
    })
})

export default app

ログ結果

  (log) body {
  destination: '~~~~',
  events: [
    {
      type: 'message',
      message: [Object],
      webhookEventId: '~~~',
      deliveryContext: [Object],
      timestamp: 1697379878455,
      source: [Object],
      replyToken: '~~~',
      mode: 'active'
    }
  ]
}
  (log) message {
  type: 'text',
  id: '~~~',
  quoteToken: '~~~',
  text: 'テスト'
}
  (log) source { type: 'user', userId: '~~~~~' }
このスクラップは2023/12/03にクローズされました