1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

node.js @line/bot-sdk を使ってAWS lambdaからLINE Messaging APIのpushMessageを使用する時に1時間位右往左往した時の話

Last updated at Posted at 2020-03-18

https://developers.line.biz/en/reference/messaging-api/#send-push-message
にて

const line = require('@line/bot-sdk');

const client = new line.Client({
  channelAccessToken: '<channel access token>'
});

const message = {
  type: 'text',
  text: 'Hello World!'
};

client.pushMessage('<to>', message)
  .then(() => {
    ...
  })
  .catch((err) => {
    // error handling
  });

でいけよ、
みたいに書かれていたので、
自分のパソコンからこれを適宜当てはめたら、
普通にpush出来たので、意気揚々とAWS lambdaで使用したら、
なんかエラー出ていた。

connectionが確立されてないよ、
とか言われたけど、なぜそんなエラーがlambdaの時だけ返ってくるのか、
意味が分かってないので、どうしたら良いのか悩んでいたのですが、
試しに、async/await形式にしたら、うまく行きました。という小話です。

結局意味は分かってないのですが、
多分、他の関数で非同期的な処理行うために、関数の頭にasyncを記述しているのに、
client.pushMessageをawaitしてなかったからだと思う。
とりあえず動いています。
以下、実際に動いているコード。

exports.handler = async function (event){
  const line = require("@line/bot-sdk");
  const config = {
    channelAccessToken: "aaaabbbbccccddddeeeeffffgggghhhhiiiijjjjkkkkllllmmmmnnnnooooppppqqqqrrrrssssttttuuuuvvvvwwwwxxxxyyyyzzzzAAAABBBBCCCCDDDDEEEEFFFFGGGGHHHHIIIIJJJJKKKKLLLLMMMMNNNNOOOOPPPPQQQQ",
  }

  const client = new line.Client(config);

  await client.pushMessage("000011112222333344445555666677777",{type:'text',text:'hello!'});
}
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?