LINEのMessage APIを使って、
- BotをグループAに招待する
- BotからグループAに対して「hoge」と送信したい
みたいにしようと思いました。
ですが、これをする場合、グループAのグループIDとやらを取得しないといけないらしい。
取得する方法はいまのところ、webhookを経由して取得するしかないっぽい。
なので、自分の場合、以下のようにしてグループIDを取得しました。
- LINEが公開しているこちら(line-bot-sdk-nodejs)サンプルリポジトリをcloneする
/examples/echo-bot-ts/
の中に移動するnpm install
するtextEventHandler
関数の中で、console.log(JSON.stringify(event))
と記述する- グループIDを取得するため。(後述)
- グループIDを取得するため。(後述)
git init
して自分のGitHubリポジトリにpushする- herokuのようなPass(今はもうherokuは無料ではないので自分の場合はrender.comを使った)と連携して、echo-bot-tsをデプロイする
- LINE Developer ConsoleからWebhookの設定をする
- うまく設定できてる場合、「検証」をクリックすると以下のような「成功」というダイアログが表示される
- 取得したいLINEグループに、Botを招待する
- そのLINEグループ上で、なんらかのチャットを送信する
- render.comのログにグループIDが表示される
- さきほど記述した
console.log(JSON.stringify(event))
がここに表示される
- さきほど記述した
あとはこのグループIDを使って、以下のようなコードを書いて実行すれば、
import { ClientConfig, Client, TextMessage } from "@line/bot-sdk"; import dotenv from "dotenv"; dotenv.config(); const clientConfig: ClientConfig = { channelAccessToken: process.env.CHANNEL_ACCESS_TOKEN || "", channelSecret: process.env.CHANNEL_SECRET, }; const GROUP_ID = "ここにグループID"; async function sendMessage() { const client = new Client(clientConfig); const text = "hoge"; const response: TextMessage = { type: "text", text, }; await client.pushMessage(GROUP_ID, response); } sendMessage();
以下のようにグループに対して送信できます。
おわり
コメント