はじめに
Messaging APIで引用メッセージを送受信できるようになりましたらしいのでLINE BOTでやってみました。
やってみる
とりあえずBotに送られてきたメッセージを引用して即答させてみようと思います。
LINE Bot SDKとLangChain.jsでGPT入りLINE Bot Serverを作ってみるで作った料理の材料を教えてくれるBotを利用します。
ドキュメントをみると
"messages": [
{
"type": "text",
"text": "Yes, you can.",
"quoteToken": "yHAz4Ua2wx7..." // 引用対象となるメッセージの引用トークンを指定する
}
]
という感じでquoteToken
プロパティに引用するメッセージのquoteTokenを渡せば良いみたいです。
とりあえず改造する前のBotサーバーにカレーライス
というメッセージを投げると以下のようなメッセージオブジェクトになっていました。quoteTokenが含まれてますね
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の作成箇所を以下のようにします
textEventMessage = {
type: 'text',
id: event.message.id,
quoteToken: event.message.quoteToken,
text: await getMessageFromAI(event.message.text),
};
これでサーバーを実行すると以下のようになりました。Botからの返信に送信したメッセージが引用されていますね。
おわりに
ちなみに現時点でのline-bot-sdk-nodejs v7.5.2のTextEventMessage型にはquoteToken
が定義されていません
つまり現時点ではTypeScriptでトランスパイルエラーが発生します。まあそのうちアップデートがかかるでしょうが、こういうAPIの更新は早めにSDKが追従ほしいところです。。