質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1063閲覧

LineのBotからの通知をトークルームに投稿したい

komet

総合スコア13

LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2020/05/26 12:02

編集2020/05/26 13:01

以下のページを参考にBotを作成し、自分にメッセージを投稿することはできたのですが、複数人がいるトークルームにメッセージを投稿する方法がわかりませんでした。LineNotifyならばできたのですが、なんとかBotで実現したく質問させていただきました。よろしくお願いします。
https://note.com/benao_blog/n/n705c503a245c

以下が自分への直接メッセージを送るソースになります。BOT_CHANNEL_TOKENとMY_USER_ID は伏せております。

function myFunction() { var message ="テスト通知です"; var CHANNEL_ACCESS_TOKEN = 'BOT_CHANNEL_TOKEN'; var USER_ID = 'MY_USER_ID'; var postData = { "to": USER_ID, "messages": [ { "type": "text", "text": message, }] } var url = "https://api.line.me/v2/bot/message/push"; var headers = { "Content-Type": "application/json", 'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN, }; var options = { "method": "post", "headers": headers, "payload": JSON.stringify(postData) }; var response = UrlFetchApp.fetch(url, options); }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuu26

2020/05/26 13:16 編集

複数人が所属する部屋にメッセージを投稿するためにはややコツが必要です。 送信先ユーザIDの代わりに「トークルームのID」を指定する必要があります。 いずれにしても、今動いているプログラムがないと助言が難しいです。 アクセストークンやユーザIDを伏せた上でソースコードを貼って頂けますでしょうか。
komet

2020/05/26 13:02

こちらソースを貼らせていただきました!
guest

回答1

0

ベストアンサー

必要な作業

今回の要件を実現するためには、以下2つの作業が必要です。

  1. トーク部屋のID(roomId)を調べる
  2. トーク部屋のroomIdへ送るようにプログラムを書き換える

トーク部屋のID(roomId)を調べる

トーク部屋のroomIdは、Botを部屋に招待したタイミングでLINEのサーバーから通知されます。
つまり、LINEサーバーからの通知を受け取れるようにしないと確認できません。

以下の手順を使うことで、LINEのサーバーから通知されるroomIdを確認可能です。
準備ができるまではBotを部屋に招待しないようにしてください。

  1. 下記サイトにアクセスし、Your unique URLのアドレスを控えておく

このサービスがLINEからの通知を代理で受け取って表示してくれます。
https://webhook.site/

  1. LINEの管理画面にログインして、開発中のBotを開く

https://manager.line.biz/

  1. 右上の設定アカウント設定グループ・複数人チャットへの参加を許可するを選ぶ

  2. 設定画面の左からMessaging APIを開く

  3. Webhook URLの欄に、1で控えたURLを入れて保存する(既に設定済みなら元の値は控えておいてください)

この設定により、LINEからの通知が1のURLへ届くようになります。

  1. ここまで設定が完了したら、Botを複数人のトーク部屋に招待する

  2. Botが部屋に入ったら、1で開いたサイトにデータが届いているはずです。

Raw Contentの中にある “roomId”:“Rxxxxxxxxxxx” となっているR始まりの文字列をコピーします。

プログラムを書き換える

  1. ソースコードの MY_USER_ID を取得した roomId(R始まりの文字列) に置き換えます

  2. この状態でメッセージを送信するとトーク部屋に届くと思います

後片付け

roomIdを調べるときに、手順5でWebhook URLを書き換えていたら元に戻してください。

投稿2020/05/26 13:16

yuu26

総合スコア38

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

komet

2020/05/26 13:30

いま手順を試していたところ、Botをルームに招待したとき、データは届いていたのですがroomidがありませんでした。。。(文字列の1文字目以降は伏せてあります) ``` { "events": [ { "type": "join", "replyToken": "dXXXXX", "source": { "groupId": "CXXXXX", "type": "group" }, "timestamp": 1590499577879, "mode": "active" } ], "destination": "UXXXXX" } ```
yuu26

2020/05/26 13:32

JSONデータの貼り付けありがとうございます。 回答では省いていましたが、複数人のトーク部屋では「roomId」になるものの、グループ部屋では「groupId」となります。ここではC始まりの文字列が該当します。 「roomId」をすべて「groupId」と読み替えて試してみて頂けますでしょうか。
komet

2020/05/26 13:39

groupidを使ったらできました!!! ご丁寧にどうもありがとうございました!
yuu26

2020/05/26 13:43

無事に解決したようで良かったです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問