LoginSignup
4
1

LINE BOTで引用メッセージ付きメッセージを返信してみる

Posted at

はじめに

Messaging APIで引用メッセージを送受信できるようになりましたらしいのでLINE BOTでやってみました。

やってみる

とりあえずBotに送られてきたメッセージを引用して即答させてみようと思います。
LINE Bot SDKとLangChain.jsでGPT入りLINE Bot Serverを作ってみるで作った料理の材料を教えてくれるBotを利用します。

ドキュメントをみると

example.json
"messages": [
    {
      "type": "text",
      "text": "Yes, you can.",
      "quoteToken": "yHAz4Ua2wx7..." // 引用対象となるメッセージの引用トークンを指定する
    }
  ]

という感じでquoteTokenプロパティに引用するメッセージのquoteTokenを渡せば良いみたいです。

とりあえず改造する前のBotサーバーにカレーライスというメッセージを投げると以下のようなメッセージオブジェクトになっていました。quoteTokenが含まれてますね

event.json
Events: [
  {
    "type":"message",
    "message": {
       "type":"text",
       "id":"473163877602558162",
       "quoteToken":"b4UJv7x2pLiTwU9irCPJ1...",
       "text":"カレーライス"
    },
    "webhookEventId":"01ABAEQEGB2FGB5PAXB2D3BRBXW",
    "deliveryContext":{"isRedelivery":false},
    "timestamp":1694858952584,
    "source": {
       "type":"user",
       "userId":"T5fee7cec2ab8ef912c5373957ab38509"
    },
    "replyToken":"82eea180218f49838dba4d9dc812eb52",
    "mode":"active"
  }
]

Botサーバーの返信用TextEventMessageの作成箇所を以下のようにします

src/lib/event.ts
    textEventMessage = {
      type: 'text',
      id: event.message.id,
      quoteToken: event.message.quoteToken,
      text: await getMessageFromAI(event.message.text),
    };

これでサーバーを実行すると以下のようになりました。Botからの返信に送信したメッセージが引用されていますね。

Screenshot_20230916-191946.png

おわりに

ちなみに現時点でのline-bot-sdk-nodejs v7.5.2のTextEventMessage型にはquoteTokenが定義されていません

つまり現時点ではTypeScriptでトランスパイルエラーが発生します。まあそのうちアップデートがかかるでしょうが、こういうAPIの更新は早めにSDKが追従ほしいところです。。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1