Q&A

LINE botでreplyが送信できない

前提・実現したいこと

nodejsでオウム返しのLINE BOTを作成しています。

発生している問題・エラーメッセージ

端末で送信したメッセージを受信し、 line-sdkのclient.Replyでメッセージを返しているのですが、端末でメッセージが受信できません。 端末側では既読にはなります。

MessageAPIの設定は下記のようにしています。 グループ・複数人チャットへの参加を許可する:有効 応答メッセージ :無効 あいさつメッセージ:有効 利用できるAPI:REPLY_MESSAGE / PUSH_MESSAGE

該当のソースコード

app.post('/webhook', line.middleware(config), (req, res) => { console.dir(req.body.events);

Promise
    .all(req.body.events.map(handleEvent))
    .then((result) => res.json(result));
});

const client = new line.Client(config);

async function handleEvent(event) {
    if (event.type !== 'message' || event.message.type !== 'text') {
    return Promise.resolve(null);
}

console.log( "replyToken:" + event.replyToken );  // (1) console.log( "msg:" + event.message.text ); // (2)

return client
    .replyMessage(event.replyToken, {
        type: 'text',
        text: event.message.text //実際に返信の言葉を入れる箇所
    })
    .catch(( err ) => {
        if( err instanceof HTTPError ) {
            console.error( err.statusCode );
        }
    });

}

試したこと

デベロッパーコンソールの「検証」ではOKとなります。

return client..replyMessage(event.replyTokenにcatchを入れたのですが、 catchには引っかかりませんでした。

[ { type: 'message', message: { type: 'text', id: 'zzzzz', text: 'aaaa' }, timestamp: 1644043573054, source: { type: 'user', userId: 'aaaaaa' }, replyToken: 'bbbb', // (3) mode: 'active' } ] (1)(2)の表示内容です。 replyTokenは(3)の内容が設定されています。

replyToken:bbbb msg:aaaa

補足情報(FW/ツールのバージョンなど)

  • 0
  • 2
  • 2421
  • twitter facebook

client.replyMessage()のresponseのステータスコードが200系ではなく400系の場合もあるのではないでしょうか。確認してみてください。

  • 1

ksytさん、ありがとうございます!

別のサーバーに環境を移したら動作しました。 replyできたのは嬉しいんですが、ちょっとう〜んってところです。。

  • 0
Are you sure? question.vm